opendp/smartnoise-sdk

Verbose Feature on MWEM No Longer Compatible with Python 3.7

01110011011101010110010001101111 opened this issue · 2 comments

Running smartnoise-synth==0.3.5.
Python Version: Python 3.7.0

It looks like MWEM is no longer compatible with Python 3.7 when the verbose function is set to true (even though the README indicates the package is compatible with Python 3.7).

Code (slightly modified from from the docs):

from snsynth import Synthesizer
import pandas as pd

pums = pd.read_csv('PUMS.csv', index_col=None) # in datasets
pums = pums.drop(['income', 'age'], axis=1)

synth = Synthesizer.create('mwem', epsilon=1.0, verbose=True)
sample = synth.fit_sample(pums)
print(sample)

Error:

AttributeError: module 'math' has no attribute 'comb'

This error is because "comb" is a new method in Python 3.8 that does not exist in Python 3.7.

The function works without the verbose=True parameter or with Python 3.8.

Thanks for reporting and pinpointing the root cause. The bug is fixed and pushed to smartnoise-synth==3.5.1 on PyPi.

Awesome, it's working now! Thank you so much!