def __init__(self, start_from, **kwargs): self.flags = Flags() if start_from == 0 or start_from == 0xFFFFFFFF: self.timestamp = start_from else: try: datetime.fromtimestamp(start_from) except TypeError as exc: raise_from(InvalidTimestampError('Timestamp invalid (0, 0xFFFFFFFF, or Unix Timestamp'), exc) else: self.timestamp = start_from for k,v in iteritems(kwargs): try: getattr(self.flags.flag, k) setattr(self.flags.flag, k, int(v)) except AttributeError as exc: raise_from(InvalidFlagError('Invalid flag: {}'.format(k)), exc) # save the timestamp and flags for reuse (if needed) Struct.set_ts(self.timestamp) Struct.set_flags(self.flags.from_bytes) # build the request self.event_request = EventRequest(timestamp=self.timestamp,flags=self.flags.from_bytes) self.message_header = MessageHeader(type=2, data=self.event_request.pack()) self.record = self.message_header.pack()
def __init__(self, name='mesh', filename=None, prefix_dir=None, **kwargs): """Create a Mesh. Parameters ---------- name : str Object name. filename : str Loads a mesh from the specified file, if not None. prefix_dir : str If not None, the filename is relative to that directory. """ Struct.__init__(self, name=name, **kwargs) if filename is None: self.io = None self.setup_done = 0 else: io = MeshIO.any_from_filename(filename, prefix_dir=prefix_dir) output('reading mesh (%s)...' % (io.filename)) tt = time.clock() io.read(self) output('...done in %.2f s' % (time.clock() - tt)) self._set_shape_info()
def __init__(self, name='mesh', filename=None, prefix_dir=None, **kwargs): """Create a Mesh. Parameters ---------- name : str Object name. filename : str Loads a mesh from the specified file, if not None. prefix_dir : str If not None, the filename is relative to that directory. """ Struct.__init__(self, name=name, **kwargs) if filename is None: self.io = None self.setup_done = 0 else: io = MeshIO.any_from_filename(filename, prefix_dir=prefix_dir) output( 'reading mesh (%s)...' % (io.filename) ) tt = time.clock() io.read(self) output( '...done in %.2f s' % (time.clock() - tt) ) self._set_shape_info()
def __init__(self, *args, **kwargs): if args: self.type = struct.unpack('>I', args[0][:4])[0] # check if it's an event data record that uses archival timestamps and if we've set archival if self.type in ARCHIVAL_RCD_TYPES and config.test_bit( Struct.get_flags(), 23) and 'reserved' not in self._field_names_: self._fields_.extend([('timestamp', 'uint32', 0), ('reserved', 'uint32', 0)]) self._field_names_.extend(['timestamp', 'reserved']) self._field_format_.update({'timestamp': 'I', 'reserved': 'I'}) else: pass # The field values do not reset after being extended for some reason (metaclass). Without this, all events parsed after the first ARCHIVAL_RCD gets parsed as if it has the 'reserved' and 'timestamp field' #map(self._fields_.remove, [f for f in self._fields_ if f[0] in ['timestamp', 'reserved']]) #map(self._field_names_.remove, [f for f in self._field_names_ if f[0] in ['timestamp', 'reserved']]) self._fields_ = [ f for f in self._fields_ if f[0] not in ['timestamp', 'reserved'] ] self._field_names_ = [ f for f in self._field_names_ if f[0] not in ['timestamp', 'reserved'] ] for k in ['timestamp', 'reserved']: self._field_format_.pop(k) super(EventData, self).__init__(*args, **kwargs) self._unpack_data()
def copy(self, name=None): """Make a deep copy of self. Parameters ---------- name : str Name of the copied mesh. """ return Struct.copy(self, deep=True, name=name)
def transform_materials(adict): d2 = {} for ii, (key, conf) in enumerate(adict.iteritems()): if isinstance(conf, str): c2 = Struct(name = key, function = conf) d2['material_%s__%d' % (c2.name, ii)] = c2 elif isinstance(conf, tuple): c2 = tuple_to_conf(key, conf, ['values', 'function', 'kind']) if len(conf) == 4: c2.flags = conf[3] d2['material_%s__%d' % (c2.name, ii)] = c2 else: c2 = transform_to_struct_1(conf) d2['material_'+conf['name']] = c2 return d2
def __init__(self, *args, **kwargs): if args: self.type = struct.unpack('>I', args[0][:4])[0] # check if it's an event data record that uses archival timestamps and if we've set archival if self.type in ARCHIVAL_RCD_TYPES and config.test_bit(Struct.get_flags(), 23) and 'reserved' not in self._field_names_: self._fields_.extend([('timestamp', 'uint32', 0), ('reserved', 'uint32', 0)]) self._field_names_.extend(['timestamp', 'reserved']) self._field_format_.update({'timestamp': 'I', 'reserved': 'I'}) else: pass # The field values do not reset after being extended for some reason (metaclass). Without this, all events parsed after the first ARCHIVAL_RCD gets parsed as if it has the 'reserved' and 'timestamp field' #map(self._fields_.remove, [f for f in self._fields_ if f[0] in ['timestamp', 'reserved']]) #map(self._field_names_.remove, [f for f in self._field_names_ if f[0] in ['timestamp', 'reserved']]) self._fields_ = [f for f in self._fields_ if f[0] not in ['timestamp', 'reserved']] self._field_names_ = [f for f in self._field_names_ if f[0] not in ['timestamp', 'reserved']] for k in ['timestamp', 'reserved']: self._field_format_.pop(k) super(EventData, self).__init__(*args, **kwargs) self._unpack_data()
def __init__(self, type_list): mod_name = sys.modules[__name__] cls_list = [ cls[0] for cls in inspect.getmembers(mod_name) if cls[0].isupper() and inspect.isclass(cls[1]) and cls[1].__module__ == __name__ ] try: type_list.remove('TERMINATE') # can't hold order, so remove it and add it back when done except ValueError as exc: pass type_list = list(set(type_list).intersection(set(cls_list))) # remove bad and duplicate values array_args = [ {'version': getattr(getattr(mod_name, rtype), 'version'), 'code': getattr(getattr(mod_name, rtype), 'code')} for rtype in type_list ] array_args.append({'code': 0, 'version': 0}) # add TERMINATE as last req self.streaming_event_request = StreamingEventRequest(service_array=array_args, timestamp=Struct.get_ts(), flags=Struct.get_flags()) self.message_header = MessageHeader(type=2049, data=self.streaming_event_request) self.record = self.message_header.pack()