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 | """ |
||
106 | def setup(self, dates): |
||
107 | """ |
||
108 | Make a PipelineEngine and expectation functions for the given dates |
||
109 | calendar. |
||
110 | |||
111 | This exists to make it easy to test our various cases with critical |
||
112 | dates missing from the calendar. |
||
113 | """ |
||
114 | A, B, C, D, E = self.sids |
||
115 | |||
116 | def num_days_between(start_date, end_date): |
||
117 | return num_days_in_range(dates, start_date, end_date) |
||
118 | |||
119 | def zip_with_dates(dts): |
||
120 | return pd.Series(pd.to_datetime(dts), index=dates) |
||
121 | |||
122 | _expected_next_announce = pd.DataFrame({ |
||
123 | A: zip_with_dates( |
||
124 | ['NaT'] * num_days_between(None, '2014-01-04') + |
||
125 | ['2014-01-15'] * num_days_between('2014-01-05', '2014-01-15') + |
||
126 | ['2014-01-20'] * num_days_between('2014-01-16', '2014-01-20') + |
||
127 | ['NaT'] * num_days_between('2014-01-21', None) |
||
128 | ), |
||
129 | B: zip_with_dates( |
||
130 | ['NaT'] * num_days_between(None, '2014-01-04') + |
||
131 | ['2014-01-20'] * num_days_between('2014-01-05', '2014-01-09') + |
||
132 | ['2014-01-15'] * num_days_between('2014-01-10', '2014-01-15') + |
||
133 | ['2014-01-20'] * num_days_between('2014-01-16', '2014-01-20') + |
||
134 | ['NaT'] * num_days_between('2014-01-21', None) |
||
135 | ), |
||
136 | C: zip_with_dates( |
||
137 | ['NaT'] * num_days_between(None, '2014-01-04') + |
||
138 | ['2014-01-10'] * num_days_between('2014-01-05', '2014-01-10') + |
||
139 | ['NaT'] * num_days_between('2014-01-11', '2014-01-14') + |
||
140 | ['2014-01-20'] * num_days_between('2014-01-15', '2014-01-20') + |
||
141 | ['NaT'] * num_days_between('2014-01-21', None) |
||
142 | ), |
||
143 | D: zip_with_dates( |
||
144 | ['NaT'] * num_days_between(None, '2014-01-04') + |
||
145 | ['2014-01-10'] * num_days_between('2014-01-05', '2014-01-10') + |
||
146 | ['2014-01-15'] * num_days_between('2014-01-11', '2014-01-15') + |
||
147 | ['NaT'] * num_days_between('2014-01-16', None) |
||
148 | ), |
||
149 | E: zip_with_dates(['NaT'] * len(dates)), |
||
150 | }, index=dates) |
||
151 | |||
152 | _expected_previous_announce = pd.DataFrame({ |
||
153 | A: zip_with_dates( |
||
154 | ['NaT'] * num_days_between(None, '2014-01-14') + |
||
155 | ['2014-01-15'] * num_days_between('2014-01-15', '2014-01-19') + |
||
156 | ['2014-01-20'] * num_days_between('2014-01-20', None) |
||
157 | ), |
||
158 | B: zip_with_dates( |
||
159 | ['NaT'] * num_days_between(None, '2014-01-14') + |
||
160 | ['2014-01-15'] * num_days_between('2014-01-15', '2014-01-19') + |
||
161 | ['2014-01-20'] * num_days_between('2014-01-20', None) |
||
162 | ), |
||
163 | C: zip_with_dates( |
||
164 | ['NaT'] * num_days_between(None, '2014-01-09') + |
||
165 | ['2014-01-10'] * num_days_between('2014-01-10', '2014-01-19') + |
||
166 | ['2014-01-20'] * num_days_between('2014-01-20', None) |
||
167 | ), |
||
168 | D: zip_with_dates( |
||
169 | ['NaT'] * num_days_between(None, '2014-01-09') + |
||
170 | ['2014-01-10'] * num_days_between('2014-01-10', '2014-01-14') + |
||
171 | ['2014-01-15'] * num_days_between('2014-01-15', None) |
||
172 | ), |
||
173 | E: zip_with_dates(['NaT'] * len(dates)), |
||
174 | }, index=dates) |
||
175 | |||
176 | _expected_next_busday_offsets = self._compute_busday_offsets( |
||
177 | _expected_next_announce |
||
178 | ) |
||
179 | _expected_previous_busday_offsets = self._compute_busday_offsets( |
||
180 | _expected_previous_announce |
||
181 | ) |
||
182 | |||
183 | def expected_next_announce(sid): |
||
184 | """ |
||
185 | Return the expected next announcement dates for ``sid``. |
||
186 | """ |
||
187 | return _expected_next_announce[sid] |
||
188 | |||
189 | def expected_next_busday_offset(sid): |
||
190 | """ |
||
191 | Return the expected number of days to the next announcement for |
||
192 | ``sid``. |
||
193 | """ |
||
194 | return _expected_next_busday_offsets[sid] |
||
195 | |||
196 | def expected_previous_announce(sid): |
||
197 | """ |
||
198 | Return the expected previous announcement dates for ``sid``. |
||
199 | """ |
||
200 | return _expected_previous_announce[sid] |
||
201 | |||
202 | def expected_previous_busday_offset(sid): |
||
203 | """ |
||
204 | Return the expected number of days to the next announcement for |
||
205 | ``sid``. |
||
206 | """ |
||
207 | return _expected_previous_busday_offsets[sid] |
||
208 | |||
209 | loader = self.loader_type(*self.loader_args(dates)) |
||
210 | engine = SimplePipelineEngine(lambda _: loader, dates, self.finder) |
||
211 | return ( |
||
212 | engine, |
||
213 | expected_next_announce, |
||
214 | expected_next_busday_offset, |
||
215 | expected_previous_announce, |
||
216 | expected_previous_busday_offset, |
||
217 | ) |
||
386 |