Conditions | 8 |
Total Lines | 111 |
Lines | 0 |
Ratio | 0 % |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | """ |
||
147 | def setup(self, dates): |
||
148 | """ |
||
149 | Make a PipelineEngine and expectation functions for the given dates |
||
150 | calendar. |
||
151 | |||
152 | This exists to make it easy to test our various cases with critical |
||
153 | dates missing from the calendar. |
||
154 | """ |
||
155 | A, B, C, D, E = self.sids |
||
156 | |||
157 | def num_days_between(start_date, end_date): |
||
158 | return num_days_in_range(dates, start_date, end_date) |
||
159 | |||
160 | def zip_with_dates(dts): |
||
161 | return pd.Series(pd.to_datetime(dts), index=dates) |
||
162 | |||
163 | _expected_next_announce = pd.DataFrame({ |
||
164 | A: zip_with_dates( |
||
165 | ['NaT'] * num_days_between(None, '2014-01-04') + |
||
166 | ['2014-01-15'] * num_days_between('2014-01-05', '2014-01-15') + |
||
167 | ['2014-01-20'] * num_days_between('2014-01-16', '2014-01-20') + |
||
168 | ['NaT'] * num_days_between('2014-01-21', None) |
||
169 | ), |
||
170 | B: zip_with_dates( |
||
171 | ['NaT'] * num_days_between(None, '2014-01-04') + |
||
172 | ['2014-01-20'] * num_days_between('2014-01-05', '2014-01-09') + |
||
173 | ['2014-01-15'] * num_days_between('2014-01-10', '2014-01-15') + |
||
174 | ['2014-01-20'] * num_days_between('2014-01-16', '2014-01-20') + |
||
175 | ['NaT'] * num_days_between('2014-01-21', None) |
||
176 | ), |
||
177 | C: zip_with_dates( |
||
178 | ['NaT'] * num_days_between(None, '2014-01-04') + |
||
179 | ['2014-01-10'] * num_days_between('2014-01-05', '2014-01-10') + |
||
180 | ['NaT'] * num_days_between('2014-01-11', '2014-01-14') + |
||
181 | ['2014-01-20'] * num_days_between('2014-01-15', '2014-01-20') + |
||
182 | ['NaT'] * num_days_between('2014-01-21', None) |
||
183 | ), |
||
184 | D: zip_with_dates( |
||
185 | ['NaT'] * num_days_between(None, '2014-01-04') + |
||
186 | ['2014-01-10'] * num_days_between('2014-01-05', '2014-01-10') + |
||
187 | ['2014-01-15'] * num_days_between('2014-01-11', '2014-01-15') + |
||
188 | ['NaT'] * num_days_between('2014-01-16', None) |
||
189 | ), |
||
190 | E: zip_with_dates(['NaT'] * len(dates)), |
||
191 | }, index=dates) |
||
192 | |||
193 | _expected_previous_announce = pd.DataFrame({ |
||
194 | A: zip_with_dates( |
||
195 | ['NaT'] * num_days_between(None, '2014-01-14') + |
||
196 | ['2014-01-15'] * num_days_between('2014-01-15', '2014-01-19') + |
||
197 | ['2014-01-20'] * num_days_between('2014-01-20', None) |
||
198 | ), |
||
199 | B: zip_with_dates( |
||
200 | ['NaT'] * num_days_between(None, '2014-01-14') + |
||
201 | ['2014-01-15'] * num_days_between('2014-01-15', '2014-01-19') + |
||
202 | ['2014-01-20'] * num_days_between('2014-01-20', None) |
||
203 | ), |
||
204 | C: zip_with_dates( |
||
205 | ['NaT'] * num_days_between(None, '2014-01-09') + |
||
206 | ['2014-01-10'] * num_days_between('2014-01-10', '2014-01-19') + |
||
207 | ['2014-01-20'] * num_days_between('2014-01-20', None) |
||
208 | ), |
||
209 | D: zip_with_dates( |
||
210 | ['NaT'] * num_days_between(None, '2014-01-09') + |
||
211 | ['2014-01-10'] * num_days_between('2014-01-10', '2014-01-14') + |
||
212 | ['2014-01-15'] * num_days_between('2014-01-15', None) |
||
213 | ), |
||
214 | E: zip_with_dates(['NaT'] * len(dates)), |
||
215 | }, index=dates) |
||
216 | |||
217 | _expected_next_busday_offsets = self._compute_busday_offsets( |
||
218 | _expected_next_announce |
||
219 | ) |
||
220 | _expected_previous_busday_offsets = self._compute_busday_offsets( |
||
221 | _expected_previous_announce |
||
222 | ) |
||
223 | |||
224 | def expected_next_announce(sid): |
||
225 | """ |
||
226 | Return the expected next announcement dates for ``sid``. |
||
227 | """ |
||
228 | return _expected_next_announce[sid] |
||
229 | |||
230 | def expected_next_busday_offset(sid): |
||
231 | """ |
||
232 | Return the expected number of days to the next announcement for |
||
233 | ``sid``. |
||
234 | """ |
||
235 | return _expected_next_busday_offsets[sid] |
||
236 | |||
237 | def expected_previous_announce(sid): |
||
238 | """ |
||
239 | Return the expected previous announcement dates for ``sid``. |
||
240 | """ |
||
241 | return _expected_previous_announce[sid] |
||
242 | |||
243 | def expected_previous_busday_offset(sid): |
||
244 | """ |
||
245 | Return the expected number of days to the next announcement for |
||
246 | ``sid``. |
||
247 | """ |
||
248 | return _expected_previous_busday_offsets[sid] |
||
249 | |||
250 | loader = self.loader_type(*self.loader_args(dates)) |
||
251 | engine = SimplePipelineEngine(lambda _: loader, dates, self.finder) |
||
252 | return ( |
||
253 | engine, |
||
254 | expected_next_announce, |
||
255 | expected_next_busday_offset, |
||
256 | expected_previous_announce, |
||
257 | expected_previous_busday_offset, |
||
258 | ) |
||
395 |