Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions telegram_upload/client/telegram_manager_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import os
import re
import sys
from distutils.version import StrictVersion
from typing import Union
from urllib.parse import urlparse

Expand All @@ -18,7 +17,27 @@
from telegram_upload.config import SESSION_FILE
from telegram_upload.exceptions import TelegramProxyError, InvalidApiFileError

if StrictVersion(telethon_version) >= StrictVersion('1.0'):

def _version_parts(version):
match = re.match(r'\d+(?:\.\d+)*', str(version).strip())
if match is None:
return ()
return tuple(int(part) for part in match.group(0).split('.'))


def _is_telethon_v1_or_newer(version):
version_parts = _version_parts(version)
if not version_parts:
return False

minimum_parts = (1, 0)
padded_length = max(len(version_parts), len(minimum_parts))
padded_version = version_parts + (0,) * (padded_length - len(version_parts))
padded_minimum = minimum_parts + (0,) * (padded_length - len(minimum_parts))
return padded_version >= padded_minimum


if _is_telethon_v1_or_newer(telethon_version):
import telethon.sync # noqa


Expand Down
21 changes: 19 additions & 2 deletions tests/test_client/test_telegram_manager_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,16 @@
from telethon.network import ConnectionTcpMTProxyRandomizedIntermediate

from telegram_upload.client import TelegramManagerClient
from telegram_upload.client.telegram_manager_client import phone_match, parse_proxy_string, USER_MAX_FILE_SIZE, \
BOT_USER_MAX_FILE_SIZE, PREMIUM_USER_MAX_FILE_SIZE, USER_MAX_CAPTION_LENGTH, PREMIUM_USER_MAX_CAPTION_LENGTH
from telegram_upload.client.telegram_manager_client import (
BOT_USER_MAX_FILE_SIZE,
PREMIUM_USER_MAX_CAPTION_LENGTH,
PREMIUM_USER_MAX_FILE_SIZE,
USER_MAX_CAPTION_LENGTH,
USER_MAX_FILE_SIZE,
_is_telethon_v1_or_newer,
parse_proxy_string,
phone_match,
)
from telegram_upload.config import SESSION_FILE
from telegram_upload.exceptions import TelegramProxyError

Expand Down Expand Up @@ -53,6 +61,15 @@ def test_proxy(self):
)


class TestTelethonVersion(unittest.TestCase):
def test_telethon_v1_or_newer(self):
self.assertFalse(_is_telethon_v1_or_newer('0.19.1'))
self.assertTrue(_is_telethon_v1_or_newer('1.0'))
self.assertTrue(_is_telethon_v1_or_newer('1.41.1'))
self.assertTrue(_is_telethon_v1_or_newer('1.0.0rc1'))
self.assertFalse(_is_telethon_v1_or_newer('dev'))


class TestTelegramManagerClient(unittest.TestCase):
@patch('builtins.open', mock_open(read_data=json.dumps(CONFIG_DATA)))
@patch('telegram_upload.client.telegram_manager_client.TelegramUploadClient.__init__')
Expand Down