|
13 | 13 |
|
14 | 14 | from collections import OrderedDict |
15 | 15 | from collections.abc import Generator, Iterable, Iterator |
16 | | -from datetime import datetime, time as time_ |
| 16 | +import datetime |
17 | 17 | from difflib import get_close_matches |
18 | 18 | from email import message_from_string |
19 | 19 | from copy import copy |
|
45 | 45 | ''', re.VERBOSE) |
46 | 46 |
|
47 | 47 |
|
48 | | -def _parse_datetime_header(value: str) -> datetime: |
| 48 | +def _parse_datetime_header(value: str) -> datetime.datetime: |
49 | 49 | match = re.match(r'^(?P<datetime>.*?)(?P<tzoffset>[+-]\d{4})?$', value) |
50 | 50 |
|
51 | | - dt = datetime.strptime(match.group('datetime'), '%Y-%m-%d %H:%M') |
| 51 | + dt = datetime.datetime.strptime(match.group('datetime'), '%Y-%m-%d %H:%M') |
52 | 52 |
|
53 | 53 | # Separate the offset into a sign component, hours, and # minutes |
54 | 54 | tzoffset = match.group('tzoffset') |
@@ -261,8 +261,8 @@ def __init__( |
261 | 261 | version: str | None = None, |
262 | 262 | copyright_holder: str | None = None, |
263 | 263 | msgid_bugs_address: str | None = None, |
264 | | - creation_date: datetime | str | None = None, |
265 | | - revision_date: datetime | time_ | float | str | None = None, |
| 264 | + creation_date: datetime.datetime | str | None = None, |
| 265 | + revision_date: datetime.datetime | datetime.time | float | str | None = None, |
266 | 266 | last_translator: str | None = None, |
267 | 267 | language_team: str | None = None, |
268 | 268 | charset: str | None = None, |
@@ -306,13 +306,13 @@ def __init__( |
306 | 306 | self.charset = charset or 'utf-8' |
307 | 307 |
|
308 | 308 | if creation_date is None: |
309 | | - creation_date = datetime.now(LOCALTZ) |
310 | | - elif isinstance(creation_date, datetime) and not creation_date.tzinfo: |
| 309 | + creation_date = datetime.datetime.now(LOCALTZ) |
| 310 | + elif isinstance(creation_date, datetime.datetime) and not creation_date.tzinfo: |
311 | 311 | creation_date = creation_date.replace(tzinfo=LOCALTZ) |
312 | 312 | self.creation_date = creation_date |
313 | 313 | if revision_date is None: |
314 | 314 | revision_date = 'YEAR-MO-DA HO:MI+ZONE' |
315 | | - elif isinstance(revision_date, datetime) and not revision_date.tzinfo: |
| 315 | + elif isinstance(revision_date, datetime.datetime) and not revision_date.tzinfo: |
316 | 316 | revision_date = revision_date.replace(tzinfo=LOCALTZ) |
317 | 317 | self.revision_date = revision_date |
318 | 318 | self.fuzzy = fuzzy |
@@ -354,7 +354,7 @@ def _get_locale_identifier(self) -> str | None: |
354 | 354 |
|
355 | 355 | def _get_header_comment(self) -> str: |
356 | 356 | comment = self._header_comment |
357 | | - year = datetime.now(LOCALTZ).strftime('%Y') |
| 357 | + year = datetime.datetime.now(LOCALTZ).strftime('%Y') |
358 | 358 | if hasattr(self.revision_date, 'strftime'): |
359 | 359 | year = self.revision_date.strftime('%Y') |
360 | 360 | comment = comment.replace('PROJECT', self.project) \ |
@@ -409,7 +409,7 @@ def _get_mime_headers(self) -> list[tuple[str, str]]: |
409 | 409 | headers.append(('POT-Creation-Date', |
410 | 410 | format_datetime(self.creation_date, 'yyyy-MM-dd HH:mmZ', |
411 | 411 | locale='en'))) |
412 | | - if isinstance(self.revision_date, (datetime, time_, int, float)): |
| 412 | + if isinstance(self.revision_date, (datetime.datetime, datetime.time, int, float)): |
413 | 413 | headers.append(('PO-Revision-Date', |
414 | 414 | format_datetime(self.revision_date, |
415 | 415 | 'yyyy-MM-dd HH:mmZ', locale='en'))) |
@@ -481,6 +481,7 @@ def _set_mime_headers(self, headers: Iterable[tuple[str, str]]) -> None: |
481 | 481 | Here's an example of the output for such a catalog template: |
482 | 482 |
|
483 | 483 | >>> from babel.dates import UTC |
| 484 | + >>> from datetime import datetime |
484 | 485 | >>> created = datetime(1990, 4, 1, 15, 30, tzinfo=UTC) |
485 | 486 | >>> catalog = Catalog(project='Foobar', version='1.0', |
486 | 487 | ... creation_date=created) |
|
0 commit comments