From 47cdcda9e2b8c17d3f4e842509a67fcf76b2548c Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 2 Mar 2018 21:05:09 +0200 Subject: [PATCH] Move device info out of Session --- telethon/sessions/abstract.py | 53 -------------------------------- telethon/telegram_bare_client.py | 30 ++++++++++-------- 2 files changed, 18 insertions(+), 65 deletions(-) diff --git a/telethon/sessions/abstract.py b/telethon/sessions/abstract.py index d92e0754..647a87c1 100644 --- a/telethon/sessions/abstract.py +++ b/telethon/sessions/abstract.py @@ -1,6 +1,5 @@ from abc import ABC, abstractmethod import time -import platform import struct import os @@ -13,23 +12,11 @@ class Session(ABC): self._last_msg_id = 0 self._time_offset = 0 self._salt = 0 - - system = platform.uname() - self._device_model = system.system or 'Unknown' - self._system_version = system.release or '1.0' - self._app_version = '1.0' - self._lang_code = 'en' - self._system_lang_code = self.lang_code self._report_errors = True self._flood_sleep_threshold = 60 def clone(self, to_instance=None): cloned = to_instance or self.__class__() - cloned._device_model = self.device_model - cloned._system_version = self.system_version - cloned._app_version = self.app_version - cloned._lang_code = self.lang_code - cloned._system_lang_code = self.system_lang_code cloned._report_errors = self.report_errors cloned._flood_sleep_threshold = self.flood_sleep_threshold return cloned @@ -99,46 +86,6 @@ class Session(ABC): def salt(self, value): self._salt = value - @property - def device_model(self): - return self._device_model - - @device_model.setter - def device_model(self, value): - self._device_model = value - - @property - def system_version(self): - return self._system_version - - @system_version.setter - def system_version(self, value): - self._system_version = value - - @property - def app_version(self): - return self._app_version - - @app_version.setter - def app_version(self, value): - self._app_version = value - - @property - def lang_code(self): - return self._lang_code - - @lang_code.setter - def lang_code(self, value): - self._lang_code = value - - @property - def system_lang_code(self): - return self._system_lang_code - - @system_lang_code.setter - def system_lang_code(self, value): - self._system_lang_code = value - @property def report_errors(self): return self._report_errors diff --git a/telethon/telegram_bare_client.py b/telethon/telegram_bare_client.py index 3a5b2bd0..bf33a7dc 100644 --- a/telethon/telegram_bare_client.py +++ b/telethon/telegram_bare_client.py @@ -1,11 +1,11 @@ import logging import os +import platform import threading from datetime import timedelta, datetime from signal import signal, SIGINT, SIGTERM, SIGABRT from threading import Lock from time import sleep - from . import version, utils from .crypto import rsa from .errors import ( @@ -73,7 +73,12 @@ class TelegramBareClient: update_workers=None, spawn_read_thread=False, timeout=timedelta(seconds=5), - **kwargs): + loop=None, + device_model=None, + system_version=None, + app_version=None, + lang_code='en', + system_lang_code='en'): """Refer to TelegramClient.__init__ for docs on this method""" if not api_id or not api_hash: raise ValueError( @@ -125,11 +130,12 @@ class TelegramBareClient: self.updates = UpdateState(workers=update_workers) # Used on connection - the user may modify these and reconnect - kwargs['app_version'] = kwargs.get('app_version', self.__version__) - for name, value in kwargs.items(): - if not hasattr(self.session, name): - raise ValueError('Unknown named parameter', name) - setattr(self.session, name, value) + system = platform.uname() + self.device_model = device_model or system.system or 'Unknown' + self.system_version = system_version or system.release or '1.0' + self.app_version = app_version or self.__version__ + self.lang_code = lang_code + self.system_lang_code = system_lang_code # Despite the state of the real connection, keep track of whether # the user has explicitly called .connect() or .disconnect() here. @@ -233,11 +239,11 @@ class TelegramBareClient: """Wraps query around InvokeWithLayerRequest(InitConnectionRequest())""" return InvokeWithLayerRequest(LAYER, InitConnectionRequest( api_id=self.api_id, - device_model=self.session.device_model, - system_version=self.session.system_version, - app_version=self.session.app_version, - lang_code=self.session.lang_code, - system_lang_code=self.session.system_lang_code, + device_model=self.device_model, + system_version=self.system_version, + app_version=self.app_version, + lang_code=self.lang_code, + system_lang_code=self.system_lang_code, lang_pack='', # "langPacks are for official apps only" query=query ))