diff --git a/mastodon/Mastodon.py b/mastodon/Mastodon.py index c454aa1..ad8e963 100644 --- a/mastodon/Mastodon.py +++ b/mastodon/Mastodon.py @@ -7,6 +7,7 @@ import os.path import time import datetime import collections +from contextlib import closing import requests from requests.models import urlencode import dateutil @@ -3744,4 +3745,3 @@ class Mastodon(Internals): if api_okay in [b'OK', b'success']: return True return False - diff --git a/mastodon/internals.py b/mastodon/internals.py index a19ed77..415e22d 100644 --- a/mastodon/internals.py +++ b/mastodon/internals.py @@ -4,7 +4,6 @@ import mimetypes import threading import six import uuid -import pytz import dateutil.parser import time import copy @@ -24,7 +23,7 @@ from .defaults import _DEFAULT_STREAM_TIMEOUT, _DEFAULT_STREAM_RECONNECT_WAIT_SE ### # Internal helpers, dragons probably ### -class Mastodon(): +class Mastodon(): def __datetime_to_epoch(self, date_time): """ Converts a python datetime to unix epoch, accounting for @@ -32,15 +31,10 @@ class Mastodon(): Assumes UTC if timezone is not given. """ - date_time_utc = None if date_time.tzinfo is None: - date_time_utc = date_time.replace(tzinfo=pytz.utc) - else: - date_time_utc = date_time.astimezone(pytz.utc) + date_time = date_time.replace(tzinfo=datetime.timezone.utc) + return date_time.timestamp() - epoch_utc = datetime.datetime.utcfromtimestamp(0).replace(tzinfo=pytz.utc) - - return (date_time_utc - epoch_utc).total_seconds() def __get_logged_in_id(self): """ @@ -73,7 +67,7 @@ class Mastodon(): if v is not None: try: if isinstance(v, int): - json_object[k] = datetime.datetime.fromtimestamp(v, pytz.utc) + json_object[k] = datetime.datetime.fromtimestamp(v, datetime.timezone.utc) else: json_object[k] = dateutil.parser.parse(v) except: @@ -129,7 +123,7 @@ class Mastodon(): every time instead of randomly doing different things on some systems and also it represents that time as the equivalent UTC time. """ - isotime = datetime_val.astimezone(pytz.utc).strftime("%Y-%m-%dT%H:%M:%S%z") + isotime = datetime_val.astimezone(datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%S%z") if isotime[-2] != ":": isotime = isotime[:-2] + ":" + isotime[-2:] return isotime diff --git a/setup.py b/setup.py index 1f03b30..29feedb 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,6 @@ setup(name='Mastodon.py', 'requests>=2.4.2', 'python-dateutil', 'six', - 'pytz', 'python-magic', 'decorator>=4.0.0', ] + blurhash_deps, diff --git a/tests/test_status.py b/tests/test_status.py index e747571..1fa7fd5 100644 --- a/tests/test_status.py +++ b/tests/test_status.py @@ -1,7 +1,7 @@ import pytest from mastodon.Mastodon import MastodonAPIError, MastodonNotFoundError import datetime -import pytz +import zoneinfo import vcr import time import pickle @@ -154,7 +154,7 @@ def test_status_pin_unpin(status, api): @pytest.mark.vcr(match_on=['path']) def test_scheduled_status(api): - base_time = datetime.datetime(4000, 1, 1, 12, 13, 14, 0, pytz.timezone("Etc/GMT+2")) + base_time = datetime.datetime(4000, 1, 1, 12, 13, 14, 0, zoneinfo.ZoneInfo("Etc/GMT+2")) the_future = base_time + datetime.timedelta(minutes=20) scheduled_toot = api.status_post("please ensure adequate headroom", scheduled_at=the_future) assert scheduled_toot