| 86 | |
| 87 | |
| 88 | class Serializer(pickle.Pickler): |
| 89 | |
| 90 | def persistent_id(self, obj): |
| 91 | class="cm"># print class="st">"serializing:", repr(obj) |
| 92 | if isinstance(obj, Mapper): |
| 93 | id_ = class="st">"mapper:" + b64encode(pickle.dumps(obj.class_)) |
| 94 | elif isinstance(obj, MapperProperty): |
| 95 | id_ = ( |
| 96 | class="st">"mapperprop:" |
| 97 | + b64encode(pickle.dumps(obj.parent.class_)) |
| 98 | + class="st">":" |
| 99 | + obj.key |
| 100 | ) |
| 101 | elif isinstance(obj, Table): |
| 102 | if class="st">"parententity" in obj._annotations: |
| 103 | id_ = class="st">"mapper_selectable:" + b64encode( |
| 104 | pickle.dumps(obj._annotations[class="st">"parententity"].class_) |
| 105 | ) |
| 106 | else: |
| 107 | id_ = fclass="st">"table:{obj.key}" |
| 108 | elif isinstance(obj, Column) and isinstance(obj.table, Table): |
| 109 | id_ = fclass="st">"column:{obj.table.key}:{obj.key}" |
| 110 | elif isinstance(obj, Session): |
| 111 | id_ = class="st">"session:" |
| 112 | elif isinstance(obj, Engine): |
| 113 | id_ = class="st">"engine:" |
| 114 | else: |
| 115 | return None |
| 116 | return id_ |
| 117 | |
| 118 | |
| 119 | our_ids = re.compile( |