| 256 | self.is_truncated_vertically = is_truncated_vertically |
| 257 | |
| 258 | def _get_footer(self) -> str: |
| 259 | name = self.series.name |
| 260 | footer = "" |
| 261 | |
| 262 | index = self.series.index |
| 263 | if ( |
| 264 | isinstance(index, (DatetimeIndex, PeriodIndex, TimedeltaIndex)) |
| 265 | and index.freq is not None |
| 266 | ): |
| 267 | footer += f"Freq: {index.freqstr}" |
| 268 | |
| 269 | if self.name is not False and name is not None: |
| 270 | if footer: |
| 271 | footer += ", " |
| 272 | |
| 273 | series_name = printing.pprint_thing(name, escape_chars=("\t", "\r", "\n")) |
| 274 | footer += f"Name: {series_name}" |
| 275 | |
| 276 | if self.length is True or ( |
| 277 | self.length == "truncate" and self.is_truncated_vertically |
| 278 | ): |
| 279 | if footer: |
| 280 | footer += ", " |
| 281 | footer += f"Length: {len(self.series)}" |
| 282 | |
| 283 | if self.dtype is not False and self.dtype is not None: |
| 284 | dtype_name = getattr(self.tr_series.dtype, "name", None) |
| 285 | if dtype_name: |
| 286 | if footer: |
| 287 | footer += ", " |
| 288 | footer += f"dtype: {printing.pprint_thing(dtype_name)}" |
| 289 | |
| 290 | # level infos are added to the end and in a new line, like it is done |
| 291 | # for Categoricals |
| 292 | if isinstance(self.tr_series.dtype, CategoricalDtype): |
| 293 | level_info = self.tr_series._values._get_repr_footer() |
| 294 | if footer: |
| 295 | footer += "\n" |
| 296 | footer += level_info |
| 297 | |
| 298 | return str(footer) |
| 299 | |
| 300 | def _get_formatted_values(self) -> list[str]: |
| 301 | return format_array( |