smartnoise_validator 0.1.2

A library for validating whether or not an analysis is differentially private.
syntax = "proto3";

package smartnoise;


message BoolNull {oneof data {bool option = 1;}}
message I64Null {oneof data {int64 option = 1;}}
message F64Null {oneof data {double option = 1;}}
message StrNull {oneof data {string option = 1;}}

message Array1dBoolNull {
    repeated BoolNull data = 1;
}
message Array1dI64Null {
    repeated I64Null data = 1;
}
message Array1dF64Null {
    repeated F64Null data = 1;
}
message Array1dStrNull {
    repeated StrNull data = 1;
}

message Array1dNull {
    oneof data {
        Array1dBoolNull bool = 1;
        Array1dI64Null i64 = 2;
        Array1dF64Null f64 = 3;
        Array1dStrNull string = 4;
    }
}

message Array1dBool {
    repeated bool data = 1;
}
message Array1dI64 {
    repeated int64 data = 1;
}
message Array1dF64 {
    repeated double data = 1;
}
message Array1dStr {
    repeated string data = 1;
}

message Array1d {
    oneof data {
        Array1dBool bool = 1;
        Array1dI64 i64 = 2;
        Array1dF64 f64 = 3;
        Array1dStr string = 4;
    }
}

// N-dimensional homogeneously typed array
message Array {
    Array1d flattened = 1;
    // length of axes
    repeated uint64 shape = 2;
}

enum DataType {
    UNKNOWN = 0;
    BOOL = 1;
    I64 = 2;
    F64 = 3;
    STRING = 4;
}

message Jagged {
    repeated Array1d data = 1;
    DataType data_type = 2;
}

message PrivacyUsage {
    message DistanceApproximate {
        double epsilon = 1;
        double delta = 2;
    }
    oneof distance {
        DistanceApproximate approximate = 1;
    }
}

message PrivacyUsages {
    repeated PrivacyUsage values = 1;
}

message ArgumentNodeIds {
    repeated IndexKey keys = 1;
    repeated uint32 values = 2;
}

message IndexKey {
    message Tuple {
        repeated IndexKey values = 1;
    }
    oneof key {
        string str = 1;
        int64 i64 = 2;
        bool bool = 3;
        Tuple tuple = 4;
    }
}