raise util.CommandError(
"Can't locate timezone: %s" % self.timezone
) from None
- create_date = (
- datetime.datetime.utcnow()
- .replace(tzinfo=datetime.timezone.utc)
- .astimezone(tzinfo)
- )
+
+ create_date = datetime.datetime.now(
+ tz=datetime.timezone.utc
+ ).astimezone(tzinfo)
else:
create_date = datetime.datetime.now()
return create_date
--- /dev/null
+.. change::
+ :tags: bug, environment
+ :tickets: 1643
+
+ Fixed issue where use of deprecated ``utcnow()`` function would generate
+ warnings. Has been replaced with ``now(UTC)``. Pull request courtesy
+ Jens Tröger.
with mock.patch(
"alembic.script.base.datetime",
mock.Mock(
- datetime=mock.Mock(utcnow=lambda: given, now=lambda: given),
+ datetime=mock.Mock(
+ now=lambda tz=None: (
+ given.replace(tzinfo=datetime.timezone.utc)
+ if timezone_arg
+ else given
+ )
+ ),
timezone=datetime.timezone,
),
):
),
)
+ def test_generates_a_date(self):
+ """test #1643"""
+ script = ScriptDirectory(
+ _get_staging_directory(),
+ file_template="%(rev)s_%(slug)s_"
+ "%(year)s_%(month)s_"
+ "%(day)s_%(hour)s_"
+ "%(minute)s_%(second)s",
+ timezone="utc",
+ )
+ # generates a date with no warnings
+ eq_(script._generate_create_date(), mock.ANY)
+
def test_default_tz(self):
self._test_tz(
None,