forked from wireservice/agate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ARCHITECTURE
13 lines (7 loc) · 875 Bytes
/
ARCHITECTURE
1
2
3
4
5
6
7
8
9
10
11
12
13
A few notes regarding agate's internal architecture. (Users should not care about any of these things.)
* Operations on Tables return new Tables.
* Operations on Columns return appropriate native data structures. Columns are not portable between tables!
* Tables that are instantiated with raw data will copy that data so it becomes immutable within the context of the Table.
* Tables that are forked will share Row instances for memory efficiency. This is safe because row data is immutable. Methods that create new data will copy data first. (e.g. Table.compute)
* ColumnMapping, RowSequence, Column, and Row have **read only** access to a Table's private variables. They are purely a formal abstraction and for purposes of encapsulation they can be treated as a single unit.
* Columns lazily construct a copy of their data from their parent Table and then cache it.