diff --git a/ChangeLog b/ChangeLog index 7940f48ec..7f1c72956 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2007-08-29 Don Allingham + * src/GrampsDb/_GrampsDBDir.py: fast unserialize() + * src/Editors/_EditPerson.py: fast unserialize() + * src/RelLib/_SourceBase.py: fast unserialize() + * src/RelLib/_Source.py: fast unserialize() + * src/RelLib/_MediaObject.py: fast unserialize() + * src/RelLib/_Person.py: fast unserialize() + * src/RelLib/_DateBase.py: fast unserialize() + * src/RelLib/_ChildRef.py: fast unserialize() + * src/RelLib/_Name.py: fast unserialize() + * src/RelLib/_Family.py: fast unserialize() + * src/RelLib/_Place.py: fast unserialize() + * src/RelLib/_RepoRef.py: fast unserialize() + * src/RelLib/_Note.py: fast unserialize() + * src/RelLib/_EventRef.py: fast unserialize() + * src/RelLib/_Repository.py: fast unserialize() + * src/RelLib/_Event.py: fast unserialize() + * src/Utils.py: all callgraph to profile + 2007-08-29 Benny Malengier * src/ReportBase/_Constants.py: quick reports constants * src/PluginUtils/__init__.py : add quick reports diff --git a/src/Editors/_EditPerson.py b/src/Editors/_EditPerson.py index d0d94f538..44f9e4a0f 100644 --- a/src/Editors/_EditPerson.py +++ b/src/Editors/_EditPerson.py @@ -92,6 +92,7 @@ class EditPerson(EditPrimary): """ Creates an EditPerson window. Associates a person with the window. """ + print person, person.serialize() EditPrimary.__init__(self, state, uistate, track, person, state.db.get_person_from_handle, callback) diff --git a/src/GrampsDb/_GrampsDBDir.py b/src/GrampsDb/_GrampsDBDir.py index b39971a6c..508fc17a6 100644 --- a/src/GrampsDb/_GrampsDBDir.py +++ b/src/GrampsDb/_GrampsDBDir.py @@ -34,6 +34,7 @@ import os import shutil import re import time +import new from gettext import gettext as _ from bsddb import dbshelve, db @@ -1094,7 +1095,7 @@ class GrampsDBDir(GrampsDbBase,UpdateCallback): class_func = primary_tables[primary_table_name]['class_func'] while data: found_handle,val = data - obj = class_func() + obj = new.instance(class_func,None) obj.unserialize(val) if self.UseTXN: @@ -1529,7 +1530,7 @@ class GrampsDBDir(GrampsDbBase,UpdateCallback): if data_map: log.error("Failed to get from handle",exc_info=True) if data: - newobj = class_type() + newobj = new.instance(class_type, None) newobj.unserialize(data) return newobj return None diff --git a/src/RelLib/_ChildRef.py b/src/RelLib/_ChildRef.py index 21ead2293..994f6319c 100644 --- a/src/RelLib/_ChildRef.py +++ b/src/RelLib/_ChildRef.py @@ -26,6 +26,8 @@ Child Reference class for GRAMPS. __revision__ = "$Revision$" +import new + #------------------------------------------------------------------------- # # GRAMPS modules @@ -84,7 +86,9 @@ class ChildRef(SecondaryObject, PrivacyBase, SourceBase, NoteBase, RefBase): SourceBase.unserialize(self, source_list) NoteBase.unserialize(self, note_list) RefBase.unserialize(self, ref) + self.frel = new.instance(ChildRefType,None) self.frel.unserialize(frel) + self.mrel = new.instance(ChildRefType,None) self.mrel.unserialize(mrel) return self diff --git a/src/RelLib/_DateBase.py b/src/RelLib/_DateBase.py index 5672c1781..46b5b7220 100644 --- a/src/RelLib/_DateBase.py +++ b/src/RelLib/_DateBase.py @@ -26,6 +26,8 @@ DateBase class for GRAMPS __revision__ = "$Revision$" +import new + #------------------------------------------------------------------------- # # GRAMPS modules @@ -72,7 +74,8 @@ class DateBase: if data == None: self.date = Date() else: - self.date = Date().unserialize(data) + self.date = new.instance(Date,None) + self.date.unserialize(data) def get_date_object(self): """ diff --git a/src/RelLib/_Event.py b/src/RelLib/_Event.py index b0d15439b..3211483fa 100644 --- a/src/RelLib/_Event.py +++ b/src/RelLib/_Event.py @@ -39,6 +39,9 @@ from _AttributeBase import AttributeBase from _DateBase import DateBase from _PlaceBase import PlaceBase from _EventType import EventType +from _MarkerType import MarkerType + +import new #------------------------------------------------------------------------- # @@ -117,7 +120,9 @@ class Event(SourceBase, NoteBase, MediaBase, AttributeBase, source_list, note_list, media_list, attribute_list, self.change, marker, self.private) = data + self.marker = new.instance(MarkerType, None) self.marker.unserialize(marker) + self.type = new.instance(EventType,None) self.type.unserialize(the_type) DateBase.unserialize(self, date) MediaBase.unserialize(self, media_list) diff --git a/src/RelLib/_EventRef.py b/src/RelLib/_EventRef.py index f3c6c2fdd..94fb1af9b 100644 --- a/src/RelLib/_EventRef.py +++ b/src/RelLib/_EventRef.py @@ -26,6 +26,8 @@ Event Reference class for GRAMPS __revision__ = "$Revision$" +import new + #------------------------------------------------------------------------- # # GRAMPS modules @@ -85,6 +87,7 @@ class EventRef(SecondaryObject, PrivacyBase, NoteBase, AttributeBase, RefBase): NoteBase.unserialize(self, note_list) AttributeBase.unserialize(self, attribute_list) RefBase.unserialize(self, ref) + self.role = new.instance(EventRoleType,None) self.role.unserialize(role) return self diff --git a/src/RelLib/_Family.py b/src/RelLib/_Family.py index 8ee3ce436..04c825922 100644 --- a/src/RelLib/_Family.py +++ b/src/RelLib/_Family.py @@ -32,6 +32,7 @@ __revision__ = "$Revision$" # #------------------------------------------------------------------------- from warnings import warn +import new #------------------------------------------------------------------------- # @@ -47,6 +48,7 @@ from _EventRef import EventRef from _LdsOrdBase import LdsOrdBase from _ChildRef import ChildRef from _FamilyRelType import FamilyRelType +from _MarkerType import MarkerType #------------------------------------------------------------------------- # @@ -133,11 +135,13 @@ class Family(SourceBase, NoteBase, MediaBase, AttributeBase, LdsOrdBase, attribute_list, lds_seal_list, source_list, note_list, self.change, marker, self.private) = data + self.marker = new.instance(MarkerType, None) self.marker.unserialize(marker) + self.type = new.instance(FamilyRelType, None) self.type.unserialize(the_type) - self.event_ref_list = [EventRef().unserialize(er) + self.event_ref_list = [new.instance(EventRef,None).unserialize(er) for er in event_ref_list] - self.child_ref_list = [ChildRef().unserialize(cr) + self.child_ref_list = [new.instance(ChildRef,None).unserialize(cr) for cr in child_ref_list] MediaBase.unserialize(self, media_list) AttributeBase.unserialize(self, attribute_list) diff --git a/src/RelLib/_MediaObject.py b/src/RelLib/_MediaObject.py index eff07aa99..a9f98b302 100644 --- a/src/RelLib/_MediaObject.py +++ b/src/RelLib/_MediaObject.py @@ -32,6 +32,7 @@ __revision__ = "$Revision$" # #------------------------------------------------------------------------- import os +import new #------------------------------------------------------------------------- # @@ -43,6 +44,7 @@ from _SourceBase import SourceBase from _NoteBase import NoteBase from _DateBase import DateBase from _AttributeBase import AttributeBase +from _MarkerType import MarkerType #------------------------------------------------------------------------- # @@ -117,7 +119,7 @@ class MediaObject(SourceBase,NoteBase,DateBase,AttributeBase,PrimaryObject): attribute_list, source_list, note_list, self.change, date, marker, self.private) = data - self.marker.unserialize(marker) + self.marker = new.instance(MarkerType, None).unserialize(marker) AttributeBase.unserialize(self, attribute_list) SourceBase.unserialize(self, source_list) NoteBase.unserialize(self, note_list) diff --git a/src/RelLib/_Name.py b/src/RelLib/_Name.py index db2f0786e..3e9ba21bd 100644 --- a/src/RelLib/_Name.py +++ b/src/RelLib/_Name.py @@ -125,7 +125,7 @@ class Name(SecondaryObject, PrivacyBase, SourceBase, NoteBase, DateBase): self.first_name, self.surname, self.suffix, self.title, name_type, self.prefix, self.patronymic, self.group_as, self.sort_as, self.display_as, self.call) = data - self.type.unserialize(name_type) + self.type = NameType(name_type) PrivacyBase.unserialize(self, privacy) SourceBase.unserialize(self, source_list) NoteBase.unserialize(self, note_list) diff --git a/src/RelLib/_Note.py b/src/RelLib/_Note.py index 507b94117..3432f869d 100644 --- a/src/RelLib/_Note.py +++ b/src/RelLib/_Note.py @@ -32,6 +32,7 @@ __revision__ = "$Revision$" # #------------------------------------------------------------------------- import re +import new #------------------------------------------------------------------------- # @@ -41,6 +42,7 @@ import re from _BasicPrimaryObject import BasicPrimaryObject from _NoteType import NoteType from MarkupText import ROOT_START_TAG, LEN_ROOT_START_TAG +from _MarkerType import MarkerType #------------------------------------------------------------------------- # @@ -83,7 +85,9 @@ class Note(BasicPrimaryObject): (self.handle, self.gramps_id, self.text, self.format, the_type, self.change, the_marker, self.private) = data + self.marker = new.instance(MarkerType, None) self.marker.unserialize(the_marker) + self.type = new.instance(NoteType, None) self.type.unserialize(the_type) def get_text_data_list(self): diff --git a/src/RelLib/_Person.py b/src/RelLib/_Person.py index bdf509cf8..d41a1d044 100644 --- a/src/RelLib/_Person.py +++ b/src/RelLib/_Person.py @@ -26,6 +26,8 @@ Person object for GRAMPS __revision__ = "$Revision$" +import new + #------------------------------------------------------------------------- # # GRAMPS modules @@ -44,6 +46,7 @@ from _EventRef import EventRef from _PersonRef import PersonRef from _AttributeType import AttributeType from _EventRoleType import EventRoleType +from _MarkerType import MarkerType #------------------------------------------------------------------------- # @@ -93,6 +96,7 @@ class Person(SourceBase, NoteBase, AttributeBase, MediaBase, UrlBase.__init__(self) LdsOrdBase.__init__(self) self.primary_name = Name() + self.marker = MarkerType() self.event_ref_list = [] self.family_list = [] self.parent_family_list = [] @@ -180,13 +184,15 @@ class Person(SourceBase, NoteBase, AttributeBase, MediaBase, person_ref_list, # 20 ) = data + self.marker = new.instance(MarkerType,None) self.marker.unserialize(marker) + self.primary_name = new.instance(Name, None) self.primary_name.unserialize(primary_name) - self.alternate_names = [Name().unserialize(name) + self.alternate_names = [new.instance(Name, None).unserialize(name) for name in alternate_names] - self.event_ref_list = [EventRef().unserialize(er) + self.event_ref_list = [new.instance(EventRef, None).unserialize(er) for er in event_ref_list] - self.person_ref_list = [PersonRef().unserialize(pr) + self.person_ref_list = [new.instance(PersonRef, None).unserialize(pr) for pr in person_ref_list] MediaBase.unserialize(self, media_list) LdsOrdBase.unserialize(self, lds_ord_list) diff --git a/src/RelLib/_Place.py b/src/RelLib/_Place.py index 0d57fda34..4940e43e5 100644 --- a/src/RelLib/_Place.py +++ b/src/RelLib/_Place.py @@ -26,6 +26,8 @@ Place object for GRAMPS __revision__ = "$Revision$" +import new + #------------------------------------------------------------------------- # # GRAMPS modules @@ -37,6 +39,7 @@ from _NoteBase import NoteBase from _MediaBase import MediaBase from _UrlBase import UrlBase from _Location import Location +from _MarkerType import MarkerType _EMPTY_LOC = Location().serialize() @@ -123,9 +126,10 @@ class Place(SourceBase, NoteBase, MediaBase, UrlBase, PrimaryObject): if main_loc == None: self.main_loc = None else: - self.main_loc = Location().unserialize(main_loc) - self.alt_loc = [Location().unserialize(al) for al in alt_loc] - self.marker.unserialize(marker) + self.main_loc = new.instance(Location, None).unserialize(main_loc) + self.alt_loc = [new.instance(Location, None).unserialize(al) + for al in alt_loc] + self.marker = new.instance(MarkerType, None).unserialize(marker) UrlBase.unserialize(self, urls) MediaBase.unserialize(self, media_list) SourceBase.unserialize(self, source_list) diff --git a/src/RelLib/_RepoRef.py b/src/RelLib/_RepoRef.py index f16fbacc3..28bf249d7 100644 --- a/src/RelLib/_RepoRef.py +++ b/src/RelLib/_RepoRef.py @@ -26,6 +26,8 @@ Repository Reference class for GRAMPS __revision__ = "$Revision$" +import new + #------------------------------------------------------------------------- # # GRAMPS modules @@ -74,6 +76,7 @@ class RepoRef(SecondaryObject, PrivacyBase, NoteBase, RefBase): Converts a serialized tuple of data to an object """ (note_list, ref, self.call_number, media_type, privacy) = data + self.media_type = new.instance(SourceMediaType, None) self.media_type.unserialize(media_type) PrivacyBase.unserialize(self, privacy) NoteBase.unserialize(self, note_list) diff --git a/src/RelLib/_Repository.py b/src/RelLib/_Repository.py index b78b41644..f38991690 100644 --- a/src/RelLib/_Repository.py +++ b/src/RelLib/_Repository.py @@ -26,6 +26,8 @@ Repository object for GRAMPS __revision__ = "$Revision$" +import new + #------------------------------------------------------------------------- # # GRAMPS modules @@ -36,6 +38,7 @@ from _NoteBase import NoteBase from _AddressBase import AddressBase from _UrlBase import UrlBase from _RepositoryType import RepositoryType +from _MarkerType import MarkerType #------------------------------------------------------------------------- # @@ -73,7 +76,9 @@ class Repository(NoteBase, AddressBase, UrlBase, PrimaryObject): (self.handle, self.gramps_id, the_type, self.name, note_list, address_list, urls, self.change, marker, self.private) = data + self.marker = new.instance(MarkerType, None) self.marker.unserialize(marker) + self.type = new.instance(RepositoryType, None) self.type.unserialize(the_type) NoteBase.unserialize(self, note_list) AddressBase.unserialize(self, address_list) diff --git a/src/RelLib/_Source.py b/src/RelLib/_Source.py index 7b50be1e6..dfa1e0ba6 100644 --- a/src/RelLib/_Source.py +++ b/src/RelLib/_Source.py @@ -26,6 +26,8 @@ Source object for GRAMPS __revision__ = "$Revision$" +import new + #------------------------------------------------------------------------- # # GRAMPS modules @@ -35,6 +37,7 @@ from _PrimaryObject import PrimaryObject from _MediaBase import MediaBase from _NoteBase import NoteBase from _RepoRef import RepoRef +from _MarkerType import MarkerType #------------------------------------------------------------------------- # @@ -78,10 +81,11 @@ class Source(MediaBase, NoteBase, PrimaryObject): self.abbrev, self.change, self.datamap, reporef_list, marker, self.private) = data - self.marker.unserialize(marker) + self.marker = new.instance(MarkerType, None).unserialize(marker) NoteBase.unserialize(self, note_list) MediaBase.unserialize(self, media_list) - self.reporef_list = [RepoRef().unserialize(rr) for rr in reporef_list] + self.reporef_list = [new.instance(RepoRef, None).unserialize(rr) + for rr in reporef_list] def _has_handle_reference(self, classname, handle): """ diff --git a/src/RelLib/_SourceBase.py b/src/RelLib/_SourceBase.py index 71020db3f..6542d757d 100644 --- a/src/RelLib/_SourceBase.py +++ b/src/RelLib/_SourceBase.py @@ -26,6 +26,8 @@ SourceBase class for GRAMPS __revision__ = "$Revision$" +import new + #------------------------------------------------------------------------- # # GRAMPS modules @@ -65,7 +67,8 @@ class SourceBase: """ Converts a serialized tuple of data to an object """ - self.source_list = [SourceRef().unserialize(item) for item in data] + self.source_list = [new.instance(SourceRef, None).unserialize(item) + for item in data] def add_source_reference(self, src_ref) : """ diff --git a/src/Utils.py b/src/Utils.py index f7c873c78..71fba75ef 100644 --- a/src/Utils.py +++ b/src/Utils.py @@ -1028,4 +1028,5 @@ def profile(func,*args): stats.strip_dirs() stats.sort_stats('time','calls') stats.print_stats(100) + stats.print_callers(100)