def model_apis(): ''' List api of each model. ''' for spec in list_models(): Model = import_model(spec).Model attrs = sorted(attr for attr in dir(Model) if not attr.startswith('_')) types = [] methods = [] constants = [] for attr in attrs: var = getattr(Model, attr) if isinstance(var, type): types.append(attr) elif hasattr(var, '__call__'): methods.append(attr) else: constants.append(attr) print 'distributions.{}.models.{}.{}:'.format( spec['flavor'], spec['name'], Model.__name__) print ' types:\n {}'.format('\n '.join(types)) print ' methods:\n {}'.format('\n '.join(methods)) print ' constants:\n {}'.format('\n '.join(constants))
def model_apis(): ''' List api of each model. ''' for spec in list_models(): Model = import_model(spec).Model attrs = sorted(attr for attr in dir(Model) if not attr.startswith('_')) types = [] methods = [] constants = [] for attr in attrs: var = getattr(Model, attr) if isinstance(var, type): types.append(attr) elif hasattr(var, '__call__'): methods.append(attr) else: constants.append(attr) print 'distributions.{}.models.{}.{}:'.format(spec['flavor'], spec['name'], Model.__name__) print ' types:\n {}'.format('\n '.join(types)) print ' methods:\n {}'.format('\n '.join(methods)) print ' constants:\n {}'.format('\n '.join(constants))
import_model, seed_all, ) try: import distributions.io.schema_pb2 has_protobuf = True except ImportError: has_protobuf = False DATA_COUNT = 20 SAMPLE_COUNT = 1000 MIN_GOODNESS_OF_FIT = 1e-3 MODULES = { '{flavor}.models.{name}'.format(**spec): import_model(spec) for spec in list_models() } IS_FAST = {'dbg': False, 'hp': True, 'lp': True} def model_is_fast(model): flavor = model.__name__.split('.')[1] return IS_FAST[flavor] def iter_examples(module): assert_hasattr(module, 'EXAMPLES') EXAMPLES = module.EXAMPLES assert_is_instance(EXAMPLES, list)
# 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. from distributions.tests.util import ( assert_all_close, list_models, import_model, ) MODULES = {} for spec in list_models(): MODULES.setdefault(spec['name'], []).append(import_model(spec)) def test_model(): for name in MODULES: yield _test_model, name def _test_model(name): modules = MODULES[name] assert_all_close([m.NAME for m in modules], err_msg='Model.__name__') EXAMPLES = [e for m in modules for e in m.EXAMPLES] for EXAMPLE in EXAMPLES: raw_shared = EXAMPLE['shared'] shareds = [module.Shared.from_dict(raw_shared) for module in modules] dumped = [m.dump() for m in shareds]
# 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. from distributions.tests.util import ( assert_all_close, list_models, import_model, ) MODULES = {} for spec in list_models(): MODULES.setdefault(spec['name'], []).append(import_model(spec)) def test_model(): for name in MODULES: yield _test_model, name def _test_model(name): modules = MODULES[name] assert_all_close([m.NAME for m in modules], err_msg='Model.__name__') EXAMPLES = [e for m in modules for e in m.EXAMPLES] for EXAMPLE in EXAMPLES: raw_shared = EXAMPLE['shared'] shareds = [module.Shared.from_dict(raw_shared) for module in modules] dumped = [m.dump() for m in shareds]