def check_contract(self, context, value, silent): type_ob = self.resolve() context[ID] = self.type_ob if self.is_iface: if not type_ob.providedBy(value): error = 'Expected implementation of %r, got %s.' % ( self.type_ob.__name__, describe_type(value)) raise ContractNotRespected( contract=self, error=error, value=value, context=context) elif not isinstance(value, type_ob): error = 'Expected type %r, got %s.' % ( self.type_ob.__name__, describe_type(value)) raise ContractNotRespected( contract=self, error=error, value=value, context=context)
def save(self, obj): desc = "object of type %s" % (describe_type(obj)) # , describe_value(obj, 100)) # self.stack.append(describe_value(obj, 120)) self.stack.append(desc) Pickler.save(self, obj) self.stack.pop()
def check_contract(self, context, value, silent): if not isinstance(value, self.types): from contracts.interface import describe_type error = 'Expected type %r, got %s.' % (self.types.__name__, describe_type(value)) raise ContractNotRespected(contract=self, error=error, value=value, context=context)
def np_zeroshape_array(x): # scalars = [ # np.int, # Platform integer (normally either int32 or int64) # np.int8, # Byte (-128 to 127) # np.int16, # Integer (-32768 to 32767) # np.int32, # Integer (-2147483648 to 2147483647) # np.int64, # Integer (9223372036854775808 to 9223372036854775807) # np.uint8, # Unsigned integer (0 to 255) # np.uint16, # Unsigned integer (0 to 65535) # np.uint32, # Unsigned integer (0 to 4294967295) # np.uint64, # Unsigned integer (0 to 18446744073709551615) # np.float, # Shorthand for float64. # np.float16, # Half precision float: sign bit, 5 bits exponent, 10 bits mantissa # np.float32, # Single precision float: sign bit, 8 bits exponent, 23 bits mantissa # np.float64, # Double precision float: sign bit, 11 bits exponent, 52 bits mantissa # np.complex, # Shorthand for complex128. # np.complex64, # Complex number, represented by two 32-bit floats (real and imaginary components) # np.complex128 # ] # # if isinstance(x, tuple(scalars)): # return # # if not isinstance(x, np.ndarray): msg = 'Not an array: %s %s ' % (type(x), describe_type(x)) raise ValueError(msg) if not x.shape == (): msg = 'Not a scalar: %s' % describe_value(x) raise ValueError(msg)
def save(self, obj): desc = 'object of type %s' % (describe_type(obj)) # , describe_value(obj, 100)) # self.stack.append(describe_value(obj, 120)) self.stack.append(desc) Pickler.save(self, obj) self.stack.pop()
def _recursive_create(self, f): new_values = {} for k, c in self.get_components_and_values(): c2 = f(c) if not isinstance(c2, TypsyType): msg = ('Could not transform %r (%s, %s) using %s: got %s' % (k, c, describe_type(c), f, describe_type(c2))) raise ValueError(msg) new_values[k] = c2 try: return type(self).create_from_kwargs(**new_values) except (Exception, TypeError) as e: msg = 'Could not call create_from_kwargs for %r' % type(self) msg += '\n values: %s' % new_values msg += '\n' + indent(traceback.format_exc(e), '> ') raise Exception(msg)
def init(self, boot_spec): DerivAgentRobust.init(self, boot_spec) shape = boot_spec.get_observations().shape() if len(shape) != 1: msg = 'This agent only works with 1D signals' raise UnsupportedSpec(msg) self.estimator = instantiate_spec(self.estimator_spec) if not isinstance(self.estimator, BDSEEstimatorInterface): msg = ('Expected a BDSEEstimatorInterface, got %s' % describe_type(self.estimator)) raise ValueError(msg) self.commands_spec = boot_spec.get_commands()
def create_from_kwargs(klass, **kwargs): for k, v in kwargs.items(): if not isinstance(v, TypsyType): msg = 'Expected a type for %r, got %s' % (k, describe_type(v)) raise ValueError(msg) spec = getfullargspec(klass.__init__) if spec.varargs is None: return klass(**kwargs) else: # assert spec.args == ['self'] assert spec.args == [] assert len(kwargs) == 1 values = list(kwargs.values())[0] return klass(*values)
def data_hash_code(s): if s is None: return 'None' if isinstance(s, str): return get_md5(s) elif isinstance(s, datetime.datetime): return get_md5(yaml_dump(s)) elif isinstance(s, list): return get_md5("-".join(map(data_hash_code, s))) elif isinstance(s, dict): keys = sorted(s) values = [s[k] for k in keys] codes = ['%s-%s' % (k, data_hash_code(v)) for k,v in zip(keys, values)] return data_hash_code("_".join(codes)) else: msg = 'Invalid type %s' % describe_type(s) raise ValueError(msg)
def find_pickling_error(obj, protocol=pickle.HIGHEST_PROTOCOL): sio = StringIO() try: pickle.dumps(obj) except Exception as e1: # s1 = traceback.format_exc(e1) pass else: msg = ('Strange! I could not reproduce the pickling error ' 'for the object of class %s' % describe_type(obj)) logger.info(msg) pickler = MyPickler(sio, protocol) try: pickler.dump(obj) except Exception as e1: msg = pickler.get_stack_description() msg += '\n --- Current exception----\n%s' % traceback.format_exc(e1) msg += '\n --- Old exception----\n%s' % traceback.format_exc(e1) return msg else: msg = 'I could not find the exact pickling error.' raise Exception(msg)
def init(self, boot_spec): self.boot_spec = boot_spec if len(boot_spec.get_observations().shape()) != 1: raise UnsupportedSpec('This agent can only work with 1D signals.') self.count = 0 self.rd = RemoveDoubles(self.change_fraction) self.y_deriv = DerivativeBox() self.bdse_estimator = instantiate_spec(self.estimator_spec) if not isinstance(self.bdse_estimator, BDSEEstimatorInterface): msg = ('Expected a BDSEEstimatorInterface, got %s' % describe_type(self.estimator)) raise ValueError(msg) self.y_stats = MeanCovariance() self.explorer.init(boot_spec) self.commands_spec = boot_spec.get_commands() # All the rest are only statistics self.stats = MiscStatistics()
def save_pair(self, k, v): self.stack.append("key %r = object of type %s" % (k, describe_type(v))) self.save(k) self.save(v) self.stack.pop()
def find_pickling_error(obj, protocol=pickle.HIGHEST_PROTOCOL): sio = StringIO() try: pickle.dumps(obj) except Exception as e1: # s1 = traceback.format_exc(e1) pass else: msg = "Strange! I could not reproduce the pickling error " "for the object of class %s" % describe_type(obj) logger.info(msg) pickler = MyPickler(sio, protocol) try: pickler.dump(obj) except Exception as e1: msg = pickler.get_stack_description() msg += "\n --- Current exception----\n%s" % traceback.format_exc(e1) msg += "\n --- Old exception----\n%s" % traceback.format_exc(e1) return msg else: msg = "I could not find the exact pickling error." raise Exception(msg)
def save_pair(self, k, v): self.stack.append('key %r = object of type %s' % (k, describe_type(v))) self.save(k) self.save(v) self.stack.pop()