Mercurial > piecrust2
comparison piecrust/fastpickle.py @ 852:4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
* Everything is a `ContentSource`, including assets directories.
* Most content sources are subclasses of the base file-system source.
* A source is processed by a "pipeline", and there are 2 built-in pipelines,
one for assets and one for pages. The asset pipeline is vaguely functional,
but the page pipeline is completely broken right now.
* Rewrite the baking process as just running appropriate pipelines on each
content item. This should allow for better parallelization.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 17 May 2017 00:11:48 -0700 |
parents | fcfbe103cfd1 |
children | 8adc27285d93 |
comparison
equal
deleted
inserted
replaced
851:2c7e57d80bba | 852:4850f8c21b6e |
---|---|
100 'year': obj.year, | 100 'year': obj.year, |
101 'month': obj.month, | 101 'month': obj.month, |
102 'day': obj.day} | 102 'day': obj.day} |
103 elif op == _UNPICKLING: | 103 elif op == _UNPICKLING: |
104 return datetime.date( | 104 return datetime.date( |
105 obj['year'], obj['month'], obj['day']) | 105 obj['year'], obj['month'], obj['day']) |
106 | 106 |
107 | 107 |
108 def _datetime_convert(obj, func, op): | 108 def _datetime_convert(obj, func, op): |
109 if op == _PICKLING: | 109 if op == _PICKLING: |
110 return {'__class__': 'datetime', | 110 return {'__class__': 'datetime', |
115 'minute': obj.minute, | 115 'minute': obj.minute, |
116 'second': obj.second, | 116 'second': obj.second, |
117 'microsecond': obj.microsecond} | 117 'microsecond': obj.microsecond} |
118 elif op == _UNPICKLING: | 118 elif op == _UNPICKLING: |
119 return datetime.datetime( | 119 return datetime.datetime( |
120 obj['year'], obj['month'], obj['day'], | 120 obj['year'], obj['month'], obj['day'], |
121 obj['hour'], obj['minute'], obj['second'], obj['microsecond']) | 121 obj['hour'], obj['minute'], obj['second'], obj['microsecond']) |
122 | 122 |
123 | 123 |
124 def _time_convert(obj, func, op): | 124 def _time_convert(obj, func, op): |
125 if op == _PICKLING: | 125 if op == _PICKLING: |
126 return {'__class__': 'time', | 126 return {'__class__': 'time', |
128 'minute': obj.minute, | 128 'minute': obj.minute, |
129 'second': obj.second, | 129 'second': obj.second, |
130 'microsecond': obj.microsecond} | 130 'microsecond': obj.microsecond} |
131 elif op == _UNPICKLING: | 131 elif op == _UNPICKLING: |
132 return datetime.time( | 132 return datetime.time( |
133 obj['hour'], obj['minute'], obj['second'], obj['microsecond']) | 133 obj['hour'], obj['minute'], obj['second'], obj['microsecond']) |
134 | 134 |
135 | 135 |
136 _type_convert = { | 136 _type_convert = { |
137 type(None): _identity_dispatch, | 137 type(None): _identity_dispatch, |
138 bool: _identity_dispatch, | 138 bool: _identity_dispatch, |
139 int: _identity_dispatch, | 139 int: _identity_dispatch, |
140 float: _identity_dispatch, | 140 float: _identity_dispatch, |
141 str: _identity_dispatch, | 141 str: _identity_dispatch, |
142 datetime.date: _date_convert, | 142 datetime.date: _date_convert, |
143 datetime.datetime: _datetime_convert, | 143 datetime.datetime: _datetime_convert, |
144 datetime.time: _time_convert, | 144 datetime.time: _time_convert, |
145 tuple: _tuple_convert, | 145 tuple: _tuple_convert, |
146 list: _list_convert, | 146 list: _list_convert, |
147 dict: _dict_convert, | 147 dict: _dict_convert, |
148 set: _set_convert, | 148 set: _set_convert, |
149 collections.OrderedDict: _ordered_dict_convert, | 149 collections.OrderedDict: _ordered_dict_convert, |
150 } | 150 } |
151 | 151 |
152 | 152 |
153 _type_unconvert = { | 153 _type_unconvert = { |
154 type(None): _identity_dispatch, | 154 type(None): _identity_dispatch, |
155 bool: _identity_dispatch, | 155 bool: _identity_dispatch, |
156 int: _identity_dispatch, | 156 int: _identity_dispatch, |
157 float: _identity_dispatch, | 157 float: _identity_dispatch, |
158 str: _identity_dispatch, | 158 str: _identity_dispatch, |
159 'date': _date_convert, | 159 'date': _date_convert, |
160 'datetime': _datetime_convert, | 160 'datetime': _datetime_convert, |
161 'time': _time_convert, | 161 'time': _time_convert, |
162 } | 162 } |
163 | 163 |
164 | 164 |
165 _collection_unconvert = { | 165 _collection_unconvert = { |
166 '__type__:tuple': _tuple_convert, | 166 '__type__:tuple': _tuple_convert, |
167 '__type__:set': _set_convert, | 167 '__type__:set': _set_convert, |
168 } | 168 } |
169 | 169 |
170 | 170 |
171 _mapping_unconvert = { | 171 _mapping_unconvert = { |
172 'OrderedDict': _ordered_dict_convert | 172 'OrderedDict': _ordered_dict_convert |
173 } | 173 } |
174 | 174 |
175 | 175 |
176 def _pickle_object(obj): | 176 def _pickle_object(obj): |
177 t = type(obj) | 177 t = type(obj) |
178 conv = _type_convert.get(t) | 178 conv = _type_convert.get(t) |