# Path: loom/transforms.py
# EXAMPLE_VALUES = {
#     'boolean': ['0', '1', 'true', 'false'],
#     'categorical': ['Monday', 'June'],
#     'unbounded_categorical': ['CRM', '90210'],
#     'count': ['0', '1', '2', '3', '4'],
#     'real': ['-100.0', '1e-4'],
#     'sparse_real': ['0', '0', '0', '0', '123456.78', '0', '0', '0'],
#     'date': ['2014-03-31', '10pm, August 1, 1979'],
#     'text': ['This is a text feature.', 'Hello World!'],
#     'tags': ['', 'big_data machine_learning platform'],
# }


import os
import numpy.random
import loom.store
import loom.transforms
import loom.tasks
from itertools import izip
from distributions.fileutil import tempdir
from loom.transforms import EXAMPLE_VALUES
#   notice, this list of conditions and the following disclaimer in the
#   documentation and/or other materials provided with the distribution.
# - Neither the name of Salesforce.com nor the names of its contributors
#   may be used to endorse or promote products derived from this
#   software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



def generate_cell(possible_values, observed_prob=0.5):
    if numpy.random.random() <= observed_prob:
        return numpy.random.choice(possible_values)
    else:
        return None


def generate_example(schema_csv, rows_csv, row_count=100):
    feature_names = []
    fluent_types = []

# Path: loom/transforms.py
# EXAMPLE_VALUES = {
#     'boolean': ['0', '1', 'true', 'false'],
#     'categorical': ['Monday', 'June'],
#     'unbounded_categorical': ['CRM', '90210'],
#     'count': ['0', '1', '2', '3', '4'],
#     'real': ['-100.0', '1e-4'],
#     'sparse_real': ['0', '0', '0', '0', '123456.78', '0', '0', '0'],
#     'date': ['2014-03-31', '10pm, August 1, 1979'],
#     'text': ['This is a text feature.', 'Hello World!'],
#     'tags': ['', 'big_data machine_learning platform'],
# }


# Path: loom/test/test_transforms.py
import os
import numpy.random
import loom.store
import loom.transforms
import loom.tasks
from itertools import izip
from distributions.fileutil import tempdir
from loom.transforms import EXAMPLE_VALUES

#   notice, this list of conditions and the following disclaimer in the
#   documentation and/or other materials provided with the distribution.
# - Neither the name of Salesforce.com nor the names of its contributors
#   may be used to endorse or promote products derived from this
#   software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



def generate_cell(possible_values, observed_prob=0.5):
    if numpy.random.random() <= observed_prob:
        return numpy.random.choice(possible_values)
    else:
        return None


def generate_example(schema_csv, rows_csv, row_count=100):
    feature_names = []
    fluent_types = []

    for fluent_type in EXAMPLE_VALUES.iterkeys():