Module pii_codex.models.common

Expand source code
from __future__ import annotations

from enum import Enum

# All listed PII Types from Milne et al (2018) and a few others along with
# models used for PII categorization for DHS, NIST, and HIPAA


class AnalysisProviderType(Enum):
    """
    Analysis Provider Types - software and cloud service APIs providing PII detection results
    """
    AZURE: str = "AZURE"
    AWS: str = "AWS"
    PRESIDIO: str = "PRESIDIO"


class RiskLevel(Enum):
    """
    Numerical values assigned to the levels on the continuum presented by Schwartz and Solove (2011)
    """
    LEVEL_ONE: int = 1  # Not-Identifiable
    LEVEL_TWO: int = 2  # Semi-Identifiable
    LEVEL_THREE: int = 3  # Identifiable


class RiskLevelDefinition(Enum):
    """
    Levels on the continuum presented by Schwartz and Solove (2011)
    """
    LEVEL_ONE: str = "Non-Identifiable"  # Default if no entities were detected, risk level is set to this
    LEVEL_TWO: str = "Semi-Identifiable"
    LEVEL_THREE: str = "Identifiable"  # Level associated with Directly PII, PHI, and Standalone PII info types


class MetadataType(Enum):
    """
    Common metadata types associated with social media posts and other online platforms
    """
    SCREEN_NAME: str = "screen_name"
    NAME: str = "name"
    LOCATION: str = "location"
    URL: str = "url"
    USER_ID: str = "user_id"


class PIIType(Enum):
    """
    Commonly observed PII types across services and software
    """
    PHONE_NUMBER: str = "PHONE"
    WORK_PHONE_NUMBER: str = "PHONE"
    EMAIL_ADDRESS: str = "EMAIL"
    ABA_ROUTING_NUMBER: str = "ABA_ROUTING_NUMBER"
    IP_ADDRESS: str = "IP_ADDRESS"
    DATE: str = "DATE"
    ADDRESS: str = "ADDRESS"
    HOME_ADDRESS: str = "ADDRESS"
    WORK_ADDRESS: str = "ADDRESS"
    AGE: str = "AGE"
    PERSON: str = "PERSON"
    CREDIT_CARD_NUMBER: str = "CREDIT_CARD_NUMBER"
    CREDIT_SCORE: str = "CREDIT_SCORE"
    CRYPTO: str = "CRYPTO"
    URL: str = "URL"
    DATE_TIME: str = "DATE_TIME"
    LOCATION: str = "LOCATION"
    ZIPCODE: str = "ZIPCODE"
    RACE: str = "RACE"
    HEIGHT: str = "HEIGHT"
    WEIGHT: str = "WEIGHT"
    GENDER: str = "GENDER"
    HOMETOWN: str = "HOMETOWN"
    SCREEN_NAME: str = "SCREEN_NAME"
    MARITAL_STATUS: str = "MARITAL_STATUS"
    NUMBER_OF_CHILDREN: str = "NUMBER_OF_CHILDREN"
    COUNTRY_OF_CITIZENSHIP: str = "COUNTRY_OF_CITIZENSHIP"
    VOICE_PRINT: str = "VOICE_PRINT"
    FINGERPRINT: str = "FINGERPRINT"
    DNA_PROFILE: str = "DNA_PROFILE"
    PICTURE_FACE: str = "PICTURE_FACE"
    HANDWRITING_SAMPLE: str = "HANDWRITING_SAMPLE"
    MOTHERS_MAIDEN_NAME: str = "MOTHERS_MAIDEN_NAME"
    DIGITAL_SIGNATURE: str = "DIGITAL_SIGNATURE"
    HEALTH_INSURANCE_ID: str = "HEALTH_INSURANCE_ID"
    SHOPPING_BEHAVIOR: str = "SHOPPING_BEHAVIOR"
    SEXUAL_PREFERENCE: str = "SEXUAL_PREFERENCE"
    SOCIAL_NETWORK_PROFILE: str = "SOCIAL_NETWORK_PROFILE"
    JOB_TITLE: str = "JOB_TITLE"
    INCOME_LEVEL: str = "INCOME_LEVEL"
    OCCUPATION: str = "OCCUPATION"
    DOCUMENTS: str = "DOCUMENTS"
    MEDICAL_LICENSE: str = "MEDICAL_LICENSE"
    LICENSE_PLATE_NUMBER: str = "LICENSE_PLATE_NUMBER"
    SECURITY_ACCESS_CODES: str = "SECURITY_ACCESS_CODES"
    PASSWORD: str = "PASSWORD"
    US_SOCIAL_SECURITY_NUMBER: str = "US_SOCIAL_SECURITY_NUMBER"
    US_BANK_ACCOUNT_NUMBER: str = "US_BANK_ACCOUNT_NUMBER"
    US_DRIVERS_LICENSE_NUMBER: str = "US_DRIVERS_LICENSE_NUMBER"
    US_PASSPORT_NUMBER: str = "US_PASSPORT_NUMBER"
    US_INDIVIDUAL_TAXPAYER_IDENTIFICATION: str = "US_INDIVIDUAL_TAXPAYER_IDENTIFICATION"
    INTERNATIONAL_BANKING_ACCOUNT_NUMBER: str = "INTERNATIONAL_BANKING_ACCOUNT_NUMBER"
    SWIFT_CODE: str = "SWIFTCode"
    NRP: str = "NRP"  # A person's nationality, religion, or political group


class NISTCategory(Enum):
    """
    Information Categories presented by NIST as noted in Milne et al., 2016
    """
    LINKABLE: str = "Linkable"
    DIRECTLY_PII: str = "Directly PII"


class DHSCategory(Enum):
    """
    Information Categories presented by DHS as noted in Milne et al., 2016
    """
    NOT_MENTIONED: str = "Not Mentioned"
    LINKABLE: str = "Linkable"
    STAND_ALONE_PII: str = "Stand Alone PII"


class HIPAACategory(Enum):
    """
    Information Categories presented by HIPAA guidelines
    """
    NON_PHI: str = "Not Protected Health Information"
    PHI: str = "Protected Health Information"


class ClusterMembershipType(Enum):
    """
    Information Cluster Memberships presented by Milne et al., 2016
    """
    BASIC_DEMOGRAPHICS: str = "Basic Demographics"
    PERSONAL_PREFERENCES: str = "Personal Preferences"
    CONTACT_INFORMATION: str = "Contact Information"
    COMMUNITY_INTERACTION: str = "Community Interaction"
    FINANCIAL_INFORMATION: str = "Financial Information"
    SECURE_IDENTIFIERS: str = "Secure Identifiers"

Classes

class AnalysisProviderType (*args, **kwds)

Analysis Provider Types - software and cloud service APIs providing PII detection results

Expand source code
class AnalysisProviderType(Enum):
    """
    Analysis Provider Types - software and cloud service APIs providing PII detection results
    """
    AZURE: str = "AZURE"
    AWS: str = "AWS"
    PRESIDIO: str = "PRESIDIO"

Ancestors

  • enum.Enum

Class variables

var AWS : str
var AZURE : str
var PRESIDIO : str
class ClusterMembershipType (*args, **kwds)

Information Cluster Memberships presented by Milne et al., 2016

Expand source code
class ClusterMembershipType(Enum):
    """
    Information Cluster Memberships presented by Milne et al., 2016
    """
    BASIC_DEMOGRAPHICS: str = "Basic Demographics"
    PERSONAL_PREFERENCES: str = "Personal Preferences"
    CONTACT_INFORMATION: str = "Contact Information"
    COMMUNITY_INTERACTION: str = "Community Interaction"
    FINANCIAL_INFORMATION: str = "Financial Information"
    SECURE_IDENTIFIERS: str = "Secure Identifiers"

Ancestors

  • enum.Enum

Class variables

var BASIC_DEMOGRAPHICS : str
var COMMUNITY_INTERACTION : str
var CONTACT_INFORMATION : str
var FINANCIAL_INFORMATION : str
var PERSONAL_PREFERENCES : str
var SECURE_IDENTIFIERS : str
class DHSCategory (*args, **kwds)

Information Categories presented by DHS as noted in Milne et al., 2016

Expand source code
class DHSCategory(Enum):
    """
    Information Categories presented by DHS as noted in Milne et al., 2016
    """
    NOT_MENTIONED: str = "Not Mentioned"
    LINKABLE: str = "Linkable"
    STAND_ALONE_PII: str = "Stand Alone PII"

Ancestors

  • enum.Enum

Class variables

var LINKABLE : str
var NOT_MENTIONED : str
var STAND_ALONE_PII : str
class HIPAACategory (*args, **kwds)

Information Categories presented by HIPAA guidelines

Expand source code
class HIPAACategory(Enum):
    """
    Information Categories presented by HIPAA guidelines
    """
    NON_PHI: str = "Not Protected Health Information"
    PHI: str = "Protected Health Information"

Ancestors

  • enum.Enum

Class variables

var NON_PHI : str
var PHI : str
class MetadataType (*args, **kwds)

Common metadata types associated with social media posts and other online platforms

Expand source code
class MetadataType(Enum):
    """
    Common metadata types associated with social media posts and other online platforms
    """
    SCREEN_NAME: str = "screen_name"
    NAME: str = "name"
    LOCATION: str = "location"
    URL: str = "url"
    USER_ID: str = "user_id"

Ancestors

  • enum.Enum

Class variables

var LOCATION : str
var NAME : str
var SCREEN_NAME : str
var URL : str
var USER_ID : str
class NISTCategory (*args, **kwds)

Information Categories presented by NIST as noted in Milne et al., 2016

Expand source code
class NISTCategory(Enum):
    """
    Information Categories presented by NIST as noted in Milne et al., 2016
    """
    LINKABLE: str = "Linkable"
    DIRECTLY_PII: str = "Directly PII"

Ancestors

  • enum.Enum

Class variables

var DIRECTLY_PII : str
var LINKABLE : str
class PIIType (*args, **kwds)

Commonly observed PII types across services and software

Expand source code
class PIIType(Enum):
    """
    Commonly observed PII types across services and software
    """
    PHONE_NUMBER: str = "PHONE"
    WORK_PHONE_NUMBER: str = "PHONE"
    EMAIL_ADDRESS: str = "EMAIL"
    ABA_ROUTING_NUMBER: str = "ABA_ROUTING_NUMBER"
    IP_ADDRESS: str = "IP_ADDRESS"
    DATE: str = "DATE"
    ADDRESS: str = "ADDRESS"
    HOME_ADDRESS: str = "ADDRESS"
    WORK_ADDRESS: str = "ADDRESS"
    AGE: str = "AGE"
    PERSON: str = "PERSON"
    CREDIT_CARD_NUMBER: str = "CREDIT_CARD_NUMBER"
    CREDIT_SCORE: str = "CREDIT_SCORE"
    CRYPTO: str = "CRYPTO"
    URL: str = "URL"
    DATE_TIME: str = "DATE_TIME"
    LOCATION: str = "LOCATION"
    ZIPCODE: str = "ZIPCODE"
    RACE: str = "RACE"
    HEIGHT: str = "HEIGHT"
    WEIGHT: str = "WEIGHT"
    GENDER: str = "GENDER"
    HOMETOWN: str = "HOMETOWN"
    SCREEN_NAME: str = "SCREEN_NAME"
    MARITAL_STATUS: str = "MARITAL_STATUS"
    NUMBER_OF_CHILDREN: str = "NUMBER_OF_CHILDREN"
    COUNTRY_OF_CITIZENSHIP: str = "COUNTRY_OF_CITIZENSHIP"
    VOICE_PRINT: str = "VOICE_PRINT"
    FINGERPRINT: str = "FINGERPRINT"
    DNA_PROFILE: str = "DNA_PROFILE"
    PICTURE_FACE: str = "PICTURE_FACE"
    HANDWRITING_SAMPLE: str = "HANDWRITING_SAMPLE"
    MOTHERS_MAIDEN_NAME: str = "MOTHERS_MAIDEN_NAME"
    DIGITAL_SIGNATURE: str = "DIGITAL_SIGNATURE"
    HEALTH_INSURANCE_ID: str = "HEALTH_INSURANCE_ID"
    SHOPPING_BEHAVIOR: str = "SHOPPING_BEHAVIOR"
    SEXUAL_PREFERENCE: str = "SEXUAL_PREFERENCE"
    SOCIAL_NETWORK_PROFILE: str = "SOCIAL_NETWORK_PROFILE"
    JOB_TITLE: str = "JOB_TITLE"
    INCOME_LEVEL: str = "INCOME_LEVEL"
    OCCUPATION: str = "OCCUPATION"
    DOCUMENTS: str = "DOCUMENTS"
    MEDICAL_LICENSE: str = "MEDICAL_LICENSE"
    LICENSE_PLATE_NUMBER: str = "LICENSE_PLATE_NUMBER"
    SECURITY_ACCESS_CODES: str = "SECURITY_ACCESS_CODES"
    PASSWORD: str = "PASSWORD"
    US_SOCIAL_SECURITY_NUMBER: str = "US_SOCIAL_SECURITY_NUMBER"
    US_BANK_ACCOUNT_NUMBER: str = "US_BANK_ACCOUNT_NUMBER"
    US_DRIVERS_LICENSE_NUMBER: str = "US_DRIVERS_LICENSE_NUMBER"
    US_PASSPORT_NUMBER: str = "US_PASSPORT_NUMBER"
    US_INDIVIDUAL_TAXPAYER_IDENTIFICATION: str = "US_INDIVIDUAL_TAXPAYER_IDENTIFICATION"
    INTERNATIONAL_BANKING_ACCOUNT_NUMBER: str = "INTERNATIONAL_BANKING_ACCOUNT_NUMBER"
    SWIFT_CODE: str = "SWIFTCode"
    NRP: str = "NRP"  # A person's nationality, religion, or political group

Ancestors

  • enum.Enum

Class variables

var ABA_ROUTING_NUMBER : str
var ADDRESS : str
var AGE : str
var COUNTRY_OF_CITIZENSHIP : str
var CREDIT_CARD_NUMBER : str
var CREDIT_SCORE : str
var CRYPTO : str
var DATE : str
var DATE_TIME : str
var DIGITAL_SIGNATURE : str
var DNA_PROFILE : str
var DOCUMENTS : str
var EMAIL_ADDRESS : str
var FINGERPRINT : str
var GENDER : str
var HANDWRITING_SAMPLE : str
var HEALTH_INSURANCE_ID : str
var HEIGHT : str
var HOMETOWN : str
var HOME_ADDRESS : str
var INCOME_LEVEL : str
var INTERNATIONAL_BANKING_ACCOUNT_NUMBER : str
var IP_ADDRESS : str
var JOB_TITLE : str
var LICENSE_PLATE_NUMBER : str
var LOCATION : str
var MARITAL_STATUS : str
var MEDICAL_LICENSE : str
var MOTHERS_MAIDEN_NAME : str
var NRP : str
var NUMBER_OF_CHILDREN : str
var OCCUPATION : str
var PASSWORD : str
var PERSON : str
var PHONE_NUMBER : str
var PICTURE_FACE : str
var RACE : str
var SCREEN_NAME : str
var SECURITY_ACCESS_CODES : str
var SEXUAL_PREFERENCE : str
var SHOPPING_BEHAVIOR : str
var SOCIAL_NETWORK_PROFILE : str
var SWIFT_CODE : str
var URL : str
var US_BANK_ACCOUNT_NUMBER : str
var US_DRIVERS_LICENSE_NUMBER : str
var US_INDIVIDUAL_TAXPAYER_IDENTIFICATION : str
var US_PASSPORT_NUMBER : str
var US_SOCIAL_SECURITY_NUMBER : str
var VOICE_PRINT : str
var WEIGHT : str
var WORK_ADDRESS : str
var WORK_PHONE_NUMBER : str
var ZIPCODE : str
class RiskLevel (*args, **kwds)

Numerical values assigned to the levels on the continuum presented by Schwartz and Solove (2011)

Expand source code
class RiskLevel(Enum):
    """
    Numerical values assigned to the levels on the continuum presented by Schwartz and Solove (2011)
    """
    LEVEL_ONE: int = 1  # Not-Identifiable
    LEVEL_TWO: int = 2  # Semi-Identifiable
    LEVEL_THREE: int = 3  # Identifiable

Ancestors

  • enum.Enum

Class variables

var LEVEL_ONE : int
var LEVEL_THREE : int
var LEVEL_TWO : int
class RiskLevelDefinition (*args, **kwds)

Levels on the continuum presented by Schwartz and Solove (2011)

Expand source code
class RiskLevelDefinition(Enum):
    """
    Levels on the continuum presented by Schwartz and Solove (2011)
    """
    LEVEL_ONE: str = "Non-Identifiable"  # Default if no entities were detected, risk level is set to this
    LEVEL_TWO: str = "Semi-Identifiable"
    LEVEL_THREE: str = "Identifiable"  # Level associated with Directly PII, PHI, and Standalone PII info types

Ancestors

  • enum.Enum

Class variables

var LEVEL_ONE : str
var LEVEL_THREE : str
var LEVEL_TWO : str