<commit_before>import math
import re
import xml.etree.ElementTree as ET

import numpy as np
import pandas as pd

# Removing linting error on Travis
# with junk function  declaration
__ = math.log, np.log, pd.DataFrame.sum


class Safety():
    """
    Class to safely evaluate mathematical expression on single
    or table data
    """

    __conditionals = ('(', ')', '()', '.', 'if', 'else')
    __basicops = ('+', '-', '*', '/', '%', '!=', '==')
    __allowedlibs = ('np', 'math')
    __allowed = (
        # Numpy
        'abs', 'absolute', 'add', 'alen', 'all', 'alltrue', 'amax', 'amin',
        'angle', 'any', 'append', 'arccos', 'arccosh', 'arcsin',
        'arcsinh', 'arctan', 'arctan2', 'arctanh', 'argmax', 'argmin',
        'argsort', 'around', 'array',
        'array2string',
        'array_equal', 'array_equiv', 'array_split', 'array_str', 'asmatrix',
        'asscalar', 'average', 'bincount', 'bitwise_and', 'bitwise_not', 'bitwise_or', 'bitwise_xor',
        'bmat', 'bool', 'byte', 'cdouble', 'ceil', 'cfloat', 'char', 'character',
        'choose', 'clip', 'complex', 'concatenate', 'conj', 'conjugate', 'convolve',
        'correlate', 'cos', 'cosh', 'count_nonzero', 'cov', 'cross', 'cumprod', 'cumproduct',
        'cumsum', 'datetime64', 'datetime_as_string', 'deg2rad', 'degrees', 'diag',
        'diagonal', 'digitize', 'divide', 'division', 'divmod', 'dot', 'double',
        'e', 'empty', 'equal', 'euler_gamma', 'exp', 'exp2', 'expm1',
        'fabs', 'fft', 'fill_diagonal', 'flip', 'fliplr', 'flipud', 'float',
        'float_power', 'floor', 'floor_divide', 'fmax', 'fmin', 'fmod', 'half', 'hamming',
        'hanning', 'heaviside', 'histogram', 'histogram2d', 'hsplit', 'hypot',
        'indices', 'inf', 'inner', 'insert', 'int', 'integer', 'invert',
        'iscomplex', 'isfinite', 'isin', 'isinf', 'isnan', 'isnat', 'isneginf', 'isposinf',
        'isreal', 'isscalar', 'kaiser', 'kron', 'lcm', 'ldexp', 'left_shift', 'less', 'less_equal',
        'lexsort', 'linalg', 'log', 'log10', 'log1p', 'log2', 'logaddexp', 'logaddexp2',
        'logical_and', 'logical_not', 'logical_or', 'logical_xor', 'logspace', 'long',
        'longcomplex', 'longdouble', 'longfloat', 'longlong',
        'mask_indices', 'mat', 'matmul', 'matrix', 'max', 'maximum', 'mean', 'median',
        'min', 'minimum', 'mod', 'modf', 'moveaxis', 'msort', 'multiply', 'nan', 'nan_to_num',
        'nanargmax', 'nanargmin', 'nancumprod', 'nancumsum', 'nanmax', 'nanmean', 'nanmedian',
        'nanmin', 'nanpercentile', 'nanprod', 'nanquantile', 'nanstd', 'nansum', 'nanvar',
        'nbytes', 'ndarray', 'ndim', 'negative', 'nonzero', 'not_equal', 'nper',
        'numarray', 'number', 'ones', 'outer', 'pad', 'partition', 'percentile', 'pi',
        'piecewise', 'poly', 'poly1d', 'polyadd', 'polyder', 'polydiv', 'polyfit', 'polyint',
        'polymul', 'polynomial', 'polysub', 'polyval', 'positive', 'power',
        'prod', 'product', 'pv', 'quantile', 'rad2deg', 'radians', 'random', 'rank', 'rate',
        'real', 'reciprocal', 'remainder', 'repeat', 'reshape', 'resize',
        'right_shift', 'rint', 'roll', 'rollaxis', 'roots', 'rot90', 'round',
        'short', 'signedinteger', 'sin', 'sinc', 'single', 'singlecomplex', 'sinh', 'size',
        'sometrue', 'sort', 'sort_complex', 'spacing', 'split', 'sqrt', 'square', 'squeeze',
        'stack', 'std', 'str', 'subtract', 'sum', 'swapaxes', 'take', 'take_along_axis',
        'tan', 'tanh', 'tensordot', 'tile', 'transpose', 'trapz', 'trim_zeros',
        'true_divide', 'ubyte', 'uint', 'ulonglong', 'unicode',
        'unique', 'unwrap', 'ushort', 'vander', 'var', 'vdot', 'vectorize',
        'vsplit', 'vstack', 'where', 'zeros',
        # Math
        'abs', 'all', 'any', 'ascii', 'bin', 'chr',
        'divmod', 'hash', 'hex', 'id', 'len', 'max',
        'min', 'oct', 'ord', 'pow', 'print', 'round',
        'sorted', 'sum', 'complex', 'dict', 'enumerate',
        'filter', 'float', 'int', 'list', 'map', 'range',
        'reversed', 'set', 'slice', 'str', 'type', 'zip',
        'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2',
        'atanh', 'ceil', 'cos', 'cosh', 'degrees', 'e',
        'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod',
        'frexp', 'fsum', 'gamma', 'hypot', 'inf', 'isclose',
        'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma',
        'log', 'log10', 'log1p', 'log2', 'modf', 'nan',
        'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh',
        'sqrt', 'tan', 'tanh', 'tau', 'trunc',
        # Pandas DataFrame
        'abs', 'add', 'agg', 'aggregate', 'align', 'all', 'any', 'append',
        'apply', 'applymap', 'as_matrix', 'asfreq', 'at', 'axes', 'bool',
        'boxplot', 'clip', 'clip_lower', 'clip_upper', 'columns', 'combine',
        'compound', 'corr', 'count', 'cov', 'cummax', 'cummin', 'cumprod',
        'cumsum', 'div', 'divide', 'dot', 'drop', 'drop_duplicates',
        'droplevel', 'dropna', 'duplicated', 'empty', 'eq', 'equals',
        'expanding', 'ffill', 'fillna', 'filter', 'first', 'first_valid_index',
        'floordiv', 'ge', 'groupby', 'gt', 'head', 'hist', 'iloc', 'index',
        'insert', 'interpolate', 'isin', 'isna', 'isnull', 'items', 'iteritems',
        'iterrows', 'itertuples', 'ix', 'join', 'keys', 'kurt', 'kurtosis',
        'last', 'last_valid_index', 'le', 'loc', 'lookup', 'lt', 'mad',
        'mask', 'max', 'mean', 'median', 'melt', 'merge', 'min', 'mod',
        'mode', 'mul', 'multiply', 'ndim', 'ne', 'nlargest', 'notna', 'notnull',
        'nsmallest', 'nunique', 'pct_change', 'pivot', 'pivot_table', 'plot',
        'pop', 'pow', 'prod', 'product', 'quantile', 'radd', 'rank', 'rdiv',
        'replace', 'resample', 'rfloordiv', 'rmod', 'rmul', 'rolling', 'round',
        'rpow', 'rsub', 'rtruediv', 'sample', 'select',
        'sem', 'shape', 'shift', 'size', 'skew', 'slice_shift',
        'squeeze', 'stack', 'std', 'sub', 'subtract', 'sum', 'swapaxes',
        'swaplevel', 'tail', 'transform', 'transpose', 'truediv', 'truncate',
        'tshift', 'style', 'take', 'unstack', 'var', 'where',
        # Pandas
        'DataFrame', 'array', 'concat', 'cut', 'date_range', 'datetime',
        'factorize', 'interval_range', 'isna', 'isnull', 'melt', 'merge',
        'notna', 'notnull', 'np', 'period_range', 'pivot', 'pivot_table',
        'plotting', 'unique', 'value_counts', 'wide_to_long'
    )

    def __init__(self, obj_name, custom_string, strict_functiondefs):
        if isinstance(obj_name, list):<commit_msg>smaller subset of accepted fns<commit_after>import math
import re
import xml.etree.ElementTree as ET

import numpy as np
import pandas as pd

# Removing linting error on Travis
# with junk function  declaration
__ = math.log, np.log, pd.DataFrame.sum


class Safety():
    """
    Class to safely evaluate mathematical expression on single
    or table data
    """

    __conditionals = ('(', ')', '()', '.', 'if', 'else')
    __basicops = ('+', '-', '*', '/', '%', '!=', '==')
    __allowedlibs = ('np', 'math')
    __allowed = (
        # common subset of Math, Pandas.Dataframe, and Numpy
        'abs', 'add', 'all', 'any', 'append', 'array', 'bool',
        'ceil', 'complex', 'cos', 'cosh', 'cov', 'cumprod',
        'cumsum', 'degrees', 'divide', 'divmod', 'dot', 'e', 'empty',
        'exp', 'filter', 'float', 'floor', 'hypot', 'inf', 'int',
        'isfinite', 'isin', 'isinf', 'isna', 'isnan', 'isnull',
        'log', 'log10', 'log2', 'max', 'mean', 'median', 'melt',
        'merge', 'min', 'mod', 'multiply', 'nan', 'ndim', 'notna',
        'notnull', 'pi', 'pivot', 'pivot_table', 'pow', 'product',
        'quantile', 'radians', 'rank', 'remainder', 'round', 'sin',
        'sinh', 'size', 'sqrt', 'squeeze', 'stack', 'std', 'str',
        'subtract', 'sum', 'swapaxes', 'take', 'tan', 'tanh',
        'transpose', 'unique', 'var', 'where'
    )

    def __init__(self, obj_name, custom_string, strict_functiondefs):
        if isinstance(obj_name, list):
{'fraction_non_alphanumeric': 0.24843476083145505, 'fraction_numerical': 0.0032556974705735034, 'mean_word_length': 3.7855002995805873, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '351591', 'n_tokens_mistral': 2929, 'n_tokens_neox': 2853, 'n_words': 721}