Don't exit 0 with linter errors (#26)
* Cosmetic: Make linter happy * Fix test safe log test Co-authored-by: Lukas Wutschitz <lukas.wutschitz@microsoft.com>
This commit is contained in:
Родитель
d83df3af60
Коммит
77783cae78
|
@ -34,7 +34,7 @@ jobs:
|
|||
# stop the build if there are Python syntax errors or undefined names
|
||||
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
|
||||
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
|
||||
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
||||
flake8 . --count --max-complexity=10 --max-line-length=127 --statistics
|
||||
- name: Test with pytest
|
||||
run: |
|
||||
pytest
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
import numpy as np
|
||||
from typing import Tuple
|
||||
|
||||
from scipy import optimize
|
||||
|
||||
from .other_accountants import RDP
|
||||
from . import discretisers
|
||||
from . import composers
|
||||
|
|
|
@ -18,7 +18,7 @@ def log(x):
|
|||
valid = (x > 0)
|
||||
x_is_0 = (x == 0)
|
||||
return np.where(valid, np.log(np.where(valid, x, 1)),
|
||||
np.where(x_is_0, -np.inf, np.nan))
|
||||
np.where(x_is_0, -np.inf, np.nan))
|
||||
|
||||
|
||||
class PrivacyRandomVariable(ABC):
|
||||
|
@ -102,7 +102,7 @@ class PoissonSubsampledGaussianMechanism(PrivacyRandomVariable):
|
|||
def cdf(self, t):
|
||||
sigma = self.sigma
|
||||
p = self.p
|
||||
z = np.where(t>0, log((p-1)/p + exp(t)/p), log((p-1)/p + exp(t)/p))
|
||||
z = np.where(t > 0, log((p-1)/p + exp(t)/p), log((p-1)/p + exp(t)/p))
|
||||
return np.where(t > log(1 - p), (
|
||||
(1.0/2.0) * p * (-erfc(np.double((1.0/4.0)*M_SQRT2*(2*pow(sigma, 2)*z - 1)/sigma))) -
|
||||
1.0/2.0*(p - 1) * (-erfc(np.double((1.0/4.0)*M_SQRT2*(2*pow(sigma, 2)*z + 1)/sigma))) + 1
|
||||
|
@ -115,7 +115,7 @@ class PoissonSubsampledGaussianMechanism(PrivacyRandomVariable):
|
|||
"""
|
||||
Compute RDP of this mechanism of order alpha
|
||||
|
||||
Based on Google's TF Privacy: https://github.com/tensorflow/privacy/blob/master/tensorflow_privacy/privacy/analysis/rdp_accountant.py
|
||||
Based on Google's TF Privacy: https://github.com/tensorflow/privacy/blob/master/tensorflow_privacy/privacy/analysis/rdp_accountant.py # noqa: E501
|
||||
"""
|
||||
if self.p == 0:
|
||||
return 0
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
# Copyright (c) Microsoft Corporation.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
from typing import AsyncContextManager
|
||||
import scipy
|
||||
import math
|
||||
import pytest
|
||||
|
@ -10,9 +9,10 @@ import sys
|
|||
|
||||
from prv_accountant.privacy_random_variables import PoissonSubsampledGaussianMechanism, log, PrivacyRandomVariableTruncated
|
||||
|
||||
|
||||
def test_safe_log():
|
||||
assert np.isnan(log(-1)) == True
|
||||
assert np.isneginf(log(0)) == True
|
||||
assert np.isnan(log(-1)) == True # noqa: E712
|
||||
assert np.isneginf(log(0)) == True # noqa: E712
|
||||
assert log(1) == pytest.approx(0)
|
||||
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче