mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-08-07 13:34:59 +03:00
asynciowrapper for sessions
This commit is contained in:
parent
785071a5cd
commit
f50694fdc2
27
.idea/inspectionProfiles/Project_Default.xml
Normal file
27
.idea/inspectionProfiles/Project_Default.xml
Normal file
|
@ -0,0 +1,27 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="ConstantConditionalExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="ConstantIfStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="ConstantOnLHSOfComparisonJS" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="FunctionNamingConventionJS" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="m_regex" value="b[a-z][A-Za-z]*" />
|
||||
<option name="m_minLength" value="4" />
|
||||
<option name="m_maxLength" value="32" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="JSClassNamingConvention" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="JSNonASCIINames" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="myAllowOnlyAscii" value="true" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="LocalVariableNamingConventionJS" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="m_regex" value="[a-z][A-Za-z]*" />
|
||||
<option name="m_minLength" value="1" />
|
||||
<option name="m_maxLength" value="32" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="ParameterNamingConventionJS" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="m_regex" value="[a-z][A-Za-z]*" />
|
||||
<option name="m_minLength" value="1" />
|
||||
<option name="m_maxLength" value="32" />
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
7
.idea/misc.xml
Normal file
7
.idea/misc.xml
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaScriptSettings">
|
||||
<option name="languageLevel" value="ES6" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6.1 virtualenv at C:\Users\Joseph\AppTwoVirtualEnv" project-jdk-type="Python SDK" />
|
||||
</project>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/telethon-opensource.iml" filepath="$PROJECT_DIR$/.idea/telethon-opensource.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
11
.idea/telethon-opensource.iml
Normal file
11
.idea/telethon-opensource.iml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
|
||||
</component>
|
||||
</module>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
679
.idea/workspace.xml
Normal file
679
.idea/workspace.xml
Normal file
|
@ -0,0 +1,679 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="ee5414ab-9d9b-454a-9be7-ad4f82b906b2" name="Default" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/telethon/client/auth.py" beforeDir="false" afterPath="$PROJECT_DIR$/telethon/client/auth.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/telethon/client/downloads.py" beforeDir="false" afterPath="$PROJECT_DIR$/telethon/client/downloads.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/telethon/client/telegrambaseclient.py" beforeDir="false" afterPath="$PROJECT_DIR$/telethon/client/telegrambaseclient.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/telethon/client/updates.py" beforeDir="false" afterPath="$PROJECT_DIR$/telethon/client/updates.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/telethon/client/uploads.py" beforeDir="false" afterPath="$PROJECT_DIR$/telethon/client/uploads.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/telethon/client/users.py" beforeDir="false" afterPath="$PROJECT_DIR$/telethon/client/users.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/telethon/network/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/telethon/network/__init__.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/telethon/network/connection/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/telethon/network/connection/__init__.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/telethon/network/mtprotosender.py" beforeDir="false" afterPath="$PROJECT_DIR$/telethon/network/mtprotosender.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/telethon/utils.py" beforeDir="false" afterPath="$PROJECT_DIR$/telethon/utils.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="TRACKING_ENABLED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="CoverageDataManager">
|
||||
<SUITE FILE_PATH="coverage/telethon_opensource$__init__.coverage" NAME="__init__ Coverage Results" MODIFIED="1538038762109" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/telethon_tests" />
|
||||
<SUITE FILE_PATH="coverage/telethon_opensource$Unittests_in_telethon_tests.coverage" NAME="Unittests in telethon_tests Coverage Results" MODIFIED="1538038767741" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/telethon_tests" />
|
||||
<SUITE FILE_PATH="coverage/telethon_opensource$Unittests_for_test_crypto_CryptoTests.coverage" NAME="Unittests for test_crypto.CryptoTests Coverage Results" MODIFIED="1538038736873" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/telethon_tests" />
|
||||
<SUITE FILE_PATH="coverage/telethon_opensource$Unittests_for_test_network_NetworkTests.coverage" NAME="Unittests for test_network.NetworkTests Coverage Results" MODIFIED="1538038888847" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/telethon_tests" />
|
||||
<SUITE FILE_PATH="coverage/telethon_opensource$test.coverage" NAME="test Coverage Results" MODIFIED="1538040465245" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/telethon" />
|
||||
<SUITE FILE_PATH="coverage/telethon_opensource$setup.coverage" NAME="setup Coverage Results" MODIFIED="1537880221604" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="memory.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/telethon/sessions/memory.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="312">
|
||||
<caret line="183" selection-start-line="183" selection-end-line="183" />
|
||||
<folding>
|
||||
<element signature="e#0#21#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="users.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/telethon/client/users.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="528">
|
||||
<caret line="78" selection-start-line="78" selection-end-line="78" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="dialogs.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/telethon/client/dialogs.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="510">
|
||||
<caret line="131" selection-start-line="131" selection-end-line="131" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="test.py" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/telethon/test.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="292">
|
||||
<caret line="30" column="42" lean-forward="true" selection-start-line="30" selection-start-column="42" selection-end-line="30" selection-end-column="42" />
|
||||
<folding>
|
||||
<element signature="e#0#14#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="test_parser.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/telethon_tests/test_parser.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="test_network.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/telethon_tests/test_network.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="738">
|
||||
<caret line="41" selection-start-line="41" selection-end-line="41" selection-end-column="53" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
<findStrings>
|
||||
<find>self.session.</find>
|
||||
<find>f =</find>
|
||||
<find>set_update</find>
|
||||
<find>self.session</find>
|
||||
<find>set_dc</find>
|
||||
<find>auth_key_call</find>
|
||||
<find>mtprot</find>
|
||||
<find>set_</find>
|
||||
<find>AsyncClass</find>
|
||||
<find>Connection</find>
|
||||
</findStrings>
|
||||
<dirStrings>
|
||||
<dir>D:\projects\telethon-opensource\telethon</dir>
|
||||
<dir>D:\projects\telethon-opensource</dir>
|
||||
</dirStrings>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/telethon/client/telegrambaseclient.py" />
|
||||
<option value="$PROJECT_DIR$/telethon/client/users.py" />
|
||||
<option value="$PROJECT_DIR$/telethon/utils.py" />
|
||||
<option value="$PROJECT_DIR$/telethon/network/mtprotosender.py" />
|
||||
<option value="$PROJECT_DIR$/telethon/network/connection/__init__.py" />
|
||||
<option value="$PROJECT_DIR$/telethon/network/__init__.py" />
|
||||
<option value="$PROJECT_DIR$/telethon_tests/test_network.py" />
|
||||
<option value="$PROJECT_DIR$/telethon/test.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
|
||||
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
|
||||
<component name="JsGulpfileManager">
|
||||
<detection-done>true</detection-done>
|
||||
<sorting>DEFINITION_ORDER</sorting>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds" extendedState="6">
|
||||
<option name="x" value="1603" />
|
||||
<option name="y" value="-8" />
|
||||
<option name="width" value="1458" />
|
||||
<option name="height" value="777" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator proportions="" version="1">
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
<path>
|
||||
<item name="telethon-opensource" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="telethon-opensource" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="telethon-opensource" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="telethon-opensource" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="telethon" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="telethon-opensource" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="telethon-opensource" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="telethon_tests" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="SearchEverywhereHistoryKey" value="	FILE	file://D:/projects/telethon-opensource/telethon/client/telegramclient.py" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
|
||||
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
|
||||
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PythonContentEntriesConfigurable" />
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
<option name="ruleStates">
|
||||
<list>
|
||||
<RuleState>
|
||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
<RuleState>
|
||||
<option name="name" value="StatusDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.test">
|
||||
<configuration name="__init__" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="telethon-opensource" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/telethon_tests" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/telethon_tests/__init__.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
</configuration>
|
||||
<configuration name="test" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="telethon-opensource" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/telethon" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/telethon/test.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
</configuration>
|
||||
<configuration name="Unittests for test_crypto.CryptoTests" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true">
|
||||
<module name="telethon-opensource" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/telethon_tests" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||
<option name="_new_additionalArguments" value="""" />
|
||||
<option name="_new_target" value=""test_crypto.CryptoTests"" />
|
||||
<option name="_new_targetType" value=""PYTHON"" />
|
||||
</configuration>
|
||||
<configuration name="Unittests for test_network.NetworkTests" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true">
|
||||
<module name="telethon-opensource" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/telethon_tests" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||
<option name="_new_additionalArguments" value="""" />
|
||||
<option name="_new_target" value=""test_network.NetworkTests"" />
|
||||
<option name="_new_targetType" value=""PYTHON"" />
|
||||
</configuration>
|
||||
<configuration name="Unittests in telethon_tests" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true">
|
||||
<module name="telethon-opensource" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/telethon_tests" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||
<option name="_new_additionalArguments" value="""" />
|
||||
<option name="_new_target" value=""$PROJECT_DIR$/telethon_tests"" />
|
||||
<option name="_new_targetType" value=""PATH"" />
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="Python.test" />
|
||||
<item itemvalue="Python tests.Unittests for test_crypto.CryptoTests" />
|
||||
<item itemvalue="Python.__init__" />
|
||||
<item itemvalue="Python tests.Unittests in telethon_tests" />
|
||||
<item itemvalue="Python tests.Unittests for test_network.NetworkTests" />
|
||||
</list>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Python.test" />
|
||||
<item itemvalue="Python tests.Unittests for test_network.NetworkTests" />
|
||||
<item itemvalue="Python tests.Unittests in telethon_tests" />
|
||||
<item itemvalue="Python.__init__" />
|
||||
<item itemvalue="Python tests.Unittests for test_crypto.CryptoTests" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="SvnConfiguration">
|
||||
<configuration />
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="ee5414ab-9d9b-454a-9be7-ad4f82b906b2" name="Default" comment="" />
|
||||
<created>1537880100846</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1537880100846</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TestHistory">
|
||||
<history-entry file="Unittests_for_test_crypto_CryptoTests - 2018.09.27 at 10h 58m 57s.xml">
|
||||
<configuration name="Unittests for test_crypto.CryptoTests" configurationId="tests" />
|
||||
</history-entry>
|
||||
<history-entry file="Unittests_in_telethon_tests - 2018.09.27 at 10h 59m 28s.xml">
|
||||
<configuration name="Unittests in telethon_tests" configurationId="tests" />
|
||||
</history-entry>
|
||||
<history-entry file="Unittests_for_test_network_NetworkTests - 2018.09.27 at 11h 00m 34s.xml">
|
||||
<configuration name="Unittests for test_network.NetworkTests" configurationId="tests" />
|
||||
</history-entry>
|
||||
<history-entry file="Unittests_for_test_network_NetworkTests - 2018.09.27 at 11h 01m 29s.xml">
|
||||
<configuration name="Unittests for test_network.NetworkTests" configurationId="tests" />
|
||||
</history-entry>
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-7" y="-7" width="2575" height="1415" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Event Log" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Database Changes" show_stripe_button="false" />
|
||||
<window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.45269743" />
|
||||
<window_info anchor="bottom" id="Version Control" />
|
||||
<window_info anchor="bottom" id="Python Console" weight="0.32994527" />
|
||||
<window_info anchor="bottom" id="Terminal" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24970178" />
|
||||
<window_info anchor="bottom" id="Statistic" />
|
||||
<window_info anchor="bottom" id="Docker" show_stripe_button="false" />
|
||||
<window_info anchor="right" id="Database" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="right" id="SciView" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.3995309" />
|
||||
<window_info id="Favorites" side_tool="true" />
|
||||
<window_info anchor="right" id="Commander" order="0" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="1" />
|
||||
</component>
|
||||
<component name="VcsContentAnnotationSettings">
|
||||
<option name="myLimit" value="2678400000" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
<breakpoints>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/telethon/client/users.py</url>
|
||||
<line>290</line>
|
||||
<option name="timeStamp" value="24" />
|
||||
</line-breakpoint>
|
||||
</breakpoints>
|
||||
<default-breakpoints>
|
||||
<breakpoint type="python-exception">
|
||||
<properties notifyOnTerminate="true" exception="BaseException">
|
||||
<option name="notifyOnTerminate" value="true" />
|
||||
</properties>
|
||||
</breakpoint>
|
||||
</default-breakpoints>
|
||||
<option name="time" value="25" />
|
||||
</breakpoint-manager>
|
||||
</component>
|
||||
<component name="debuggerHistoryManager">
|
||||
<expressions id="evaluateExpression">
|
||||
<expression>
|
||||
<expression-string>x,y=(*args,)</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
<expression>
|
||||
<expression-string>x,y=*args</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
<expression>
|
||||
<expression-string>x=(*args,)</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
<expression>
|
||||
<expression-string>x=(*args)</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
<expression>
|
||||
<expression-string>args</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
<expression>
|
||||
<expression-string>x=*args</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
<expression>
|
||||
<expression-string>*args</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
<expression>
|
||||
<expression-string>w</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
<expression>
|
||||
<expression-string>w()</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
</expressions>
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/telethon/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<folding>
|
||||
<element signature="e#0#14#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/setup.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="306">
|
||||
<caret line="25" column="37" selection-start-line="25" selection-start-column="37" selection-end-line="25" selection-end-column="37" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/tl/functions/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="277">
|
||||
<caret line="22" column="8" selection-start-line="22" selection-start-column="8" selection-end-line="22" selection-end-column="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/sessions/string.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="180">
|
||||
<caret line="10" column="26" lean-forward="true" selection-start-line="10" selection-start-column="26" selection-end-line="10" selection-end-column="26" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/.gitignore">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/sessions/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<folding>
|
||||
<element signature="e#0#29#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python36-32/Lib/asyncio/events.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="247">
|
||||
<caret line="126" selection-start-line="126" selection-end-line="126" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/client/auth.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-1170">
|
||||
<caret line="16" column="8" selection-start-line="16" selection-start-column="8" selection-end-line="16" selection-end-column="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/sessions/abstract.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="126">
|
||||
<caret line="14" column="8" selection-start-line="14" selection-start-column="8" selection-end-line="14" selection-end-column="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/client/telegrambaseclient.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="582">
|
||||
<caret line="228" selection-start-line="228" selection-end-line="228" />
|
||||
<folding>
|
||||
<element signature="e#0#10#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python36-32/Lib/asyncio/base_events.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="240">
|
||||
<caret line="465" selection-start-line="465" selection-end-line="465" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppTwoVirtualEnv/Lib/site-packages/async_generator/_impl.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="6750">
|
||||
<caret line="382" column="11" selection-start-line="382" selection-start-column="11" selection-end-line="382" selection-end-column="11" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/tl/functions/messages.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="485">
|
||||
<caret line="1179" selection-start-line="1179" selection-end-line="1179" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/client/dialogs.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="510">
|
||||
<caret line="131" selection-start-line="131" selection-end-line="131" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/client/users.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="528">
|
||||
<caret line="78" selection-start-line="78" selection-end-line="78" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/sessions/sqlite.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-903">
|
||||
<caret line="183" column="12" selection-start-line="183" selection-start-column="8" selection-end-line="183" selection-end-column="12" />
|
||||
<folding>
|
||||
<element signature="e#0#15#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/client/telegramclient.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/utils.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="258">
|
||||
<caret line="122" selection-start-line="122" selection-end-line="122" />
|
||||
<folding>
|
||||
<element signature="e#159#172#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/sessions/memory.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="312">
|
||||
<caret line="183" selection-start-line="183" selection-end-line="183" />
|
||||
<folding>
|
||||
<element signature="e#0#21#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/network/mtprotosender.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="864">
|
||||
<caret line="48" column="23" lean-forward="true" selection-start-line="48" selection-start-column="23" selection-end-line="48" selection-end-column="23" />
|
||||
<folding>
|
||||
<element signature="e#0#14#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/network/connection/tcpfull.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="144">
|
||||
<caret line="14" column="8" selection-start-line="14" selection-start-column="8" selection-end-line="14" selection-end-column="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/network/connection/common.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="171">
|
||||
<caret line="15" column="6" selection-start-line="15" selection-start-column="6" selection-end-line="15" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/network/connection/http.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="54">
|
||||
<caret line="7" column="27" selection-start-line="7" selection-start-column="27" selection-end-line="7" selection-end-column="27" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/network/connection/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="90">
|
||||
<caret line="5" column="30" selection-start-line="5" selection-start-column="30" selection-end-line="5" selection-end-column="30" />
|
||||
<folding>
|
||||
<element signature="e#0#38#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/network/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="162">
|
||||
<caret line="9" column="56" selection-start-line="9" selection-start-column="56" selection-end-line="9" selection-end-column="56" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon_tests/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="90">
|
||||
<caret line="5" lean-forward="true" selection-start-line="5" selection-end-line="5" />
|
||||
<folding>
|
||||
<element signature="e#0#36#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon_tests/test_crypto.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-1022">
|
||||
<caret line="17" column="46" lean-forward="true" selection-start-line="17" selection-start-column="46" selection-end-line="17" selection-end-column="46" />
|
||||
<folding>
|
||||
<element signature="e#0#15#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon_tests/test_parser.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon_tests/test_higher_level.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="360">
|
||||
<caret line="20" column="40" selection-start-line="20" selection-start-column="40" selection-end-line="20" selection-end-column="40" />
|
||||
<folding>
|
||||
<element signature="e#0#15#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon_tests/test_network.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="738">
|
||||
<caret line="41" selection-start-line="41" selection-end-line="41" selection-end-column="53" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/telethon/test.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="292">
|
||||
<caret line="30" column="42" lean-forward="true" selection-start-line="30" selection-start-column="42" selection-end-line="30" selection-end-column="42" />
|
||||
<folding>
|
||||
<element signature="e#0#14#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
<component name="masterDetails">
|
||||
<states>
|
||||
<state key="ScopeChooserConfigurable.UI">
|
||||
<settings>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
</states>
|
||||
</component>
|
||||
</project>
|
|
@ -399,7 +399,7 @@ class AuthMethods(MessageParseMethods, UserMethods):
|
|||
return False
|
||||
|
||||
await self.disconnect()
|
||||
self.session.delete()
|
||||
await self.session.delete()
|
||||
self._authorized = False
|
||||
return True
|
||||
|
||||
|
|
|
@ -223,9 +223,9 @@ class DownloadMethods(UserMethods):
|
|||
config = await self(functions.help.GetConfigRequest())
|
||||
for option in config.dc_options:
|
||||
if option.ip_address == self.session.server_address:
|
||||
self.session.set_dc(
|
||||
await self.session.set_dc(
|
||||
option.id, option.ip_address, option.port)
|
||||
self.session.save()
|
||||
await self.session.save()
|
||||
break
|
||||
|
||||
# TODO Figure out why the session may have the wrong DC ID
|
||||
|
|
|
@ -16,7 +16,7 @@ from ..network.mtprotostate import MTProtoState
|
|||
from ..sessions import Session, SQLiteSession, MemorySession
|
||||
from ..tl import TLObject, functions, types
|
||||
from ..tl.alltlobjects import LAYER
|
||||
|
||||
from ..utils import AsyncClassWrapper
|
||||
DEFAULT_DC_ID = 4
|
||||
DEFAULT_IPV4_IP = '149.154.167.51'
|
||||
DEFAULT_IPV6_IP = '[2001:67c:4e8:f002::a]'
|
||||
|
@ -197,8 +197,7 @@ class TelegramBaseClient(abc.ABC):
|
|||
DEFAULT_PORT
|
||||
)
|
||||
|
||||
self.flood_sleep_threshold = flood_sleep_threshold
|
||||
self.session = session
|
||||
self.session = AsyncClassWrapper(session)
|
||||
self.api_id = int(api_id)
|
||||
self.api_hash = api_hash
|
||||
|
||||
|
@ -330,8 +329,8 @@ class TelegramBaseClient(abc.ABC):
|
|||
await self._disconnect()
|
||||
if getattr(self, 'session', None):
|
||||
if getattr(self, '_state', None):
|
||||
self.session.set_update_state(0, self._state)
|
||||
self.session.close()
|
||||
f = await self.session.set_update_state(0, self._state)
|
||||
await self.session.close()
|
||||
|
||||
async def _disconnect(self):
|
||||
"""
|
||||
|
@ -369,7 +368,7 @@ class TelegramBaseClient(abc.ABC):
|
|||
__log__.info('Reconnecting to new data center %s', new_dc)
|
||||
dc = await self._get_dc(new_dc)
|
||||
|
||||
self.session.set_dc(dc.id, dc.ip_address, dc.port)
|
||||
await self.session.set_dc(dc.id, dc.ip_address, dc.port)
|
||||
# auth_key's are associated with a server, which has now changed
|
||||
# so it's not valid anymore. Set to None to force recreating it.
|
||||
self.session.auth_key = self._sender.state.auth_key = None
|
||||
|
@ -377,14 +376,14 @@ class TelegramBaseClient(abc.ABC):
|
|||
await self._disconnect()
|
||||
return await self.connect()
|
||||
|
||||
def _auth_key_callback(self, auth_key):
|
||||
async def _auth_key_callback(self, auth_key):
|
||||
"""
|
||||
Callback from the sender whenever it needed to generate a
|
||||
new authorization key. This means we are not authorized.
|
||||
"""
|
||||
self._authorized = None
|
||||
self.session.auth_key = auth_key
|
||||
self.session.save()
|
||||
await self.session.save()
|
||||
|
||||
# endregion
|
||||
|
||||
|
@ -472,7 +471,7 @@ class TelegramBaseClient(abc.ABC):
|
|||
session = self._exported_sessions.get(cdn_redirect.dc_id)
|
||||
if not session:
|
||||
dc = await self._get_dc(cdn_redirect.dc_id, cdn=True)
|
||||
session = self.session.clone()
|
||||
session = await self.session.clone()
|
||||
session.set_dc(dc.id, dc.ip_address, dc.port)
|
||||
self._exported_sessions[cdn_redirect.dc_id] = session
|
||||
|
||||
|
|
|
@ -137,7 +137,7 @@ class UpdateMethods(UserMethods):
|
|||
|
||||
This can also be used to forcibly fetch new updates if there are any.
|
||||
"""
|
||||
state = self.session.get_update_state(0)
|
||||
state = await self.session.get_update_state(0)
|
||||
if not state or not state.pts:
|
||||
state = await self(functions.updates.GetStateRequest())
|
||||
|
||||
|
@ -172,15 +172,15 @@ class UpdateMethods(UserMethods):
|
|||
state.pts = d.pts
|
||||
break
|
||||
finally:
|
||||
self.session.set_update_state(0, state)
|
||||
await self.session.set_update_state(0, state)
|
||||
self.session.catching_up = False
|
||||
|
||||
# endregion
|
||||
|
||||
# region Private methods
|
||||
|
||||
def _handle_update(self, update):
|
||||
self.session.process_entities(update)
|
||||
async def _handle_update(self, update):
|
||||
await self.session.process_entities(update)
|
||||
if isinstance(update, (types.Updates, types.UpdatesCombined)):
|
||||
entities = {utils.get_peer_id(x): x for x in
|
||||
itertools.chain(update.users, update.chats)}
|
||||
|
@ -236,7 +236,7 @@ class UpdateMethods(UserMethods):
|
|||
# inserted because this is a rather expensive operation
|
||||
# (default's sqlite3 takes ~0.1s to commit changes). Do
|
||||
# it every minute instead. No-op if there's nothing new.
|
||||
self.session.save()
|
||||
await self.session.save()
|
||||
|
||||
# We need to send some content-related request at least hourly
|
||||
# for Telegram to keep delivering updates, otherwise they will
|
||||
|
|
|
@ -211,7 +211,7 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
|
|||
entity, media=types.InputMediaUploadedPhoto(fh)
|
||||
))
|
||||
input_photo = utils.get_input_photo(r.photo)
|
||||
self.session.cache_file(fh.md5, fh.size, input_photo)
|
||||
await self.session.cache_file(fh.md5, fh.size, input_photo)
|
||||
fh = input_photo
|
||||
|
||||
if captions:
|
||||
|
@ -326,7 +326,7 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
|
|||
file = stream.read()
|
||||
hash_md5.update(file)
|
||||
if use_cache:
|
||||
cached = self.session.get_file(
|
||||
cached = await self.session.get_file(
|
||||
hash_md5.digest(), file_size, cls=use_cache
|
||||
)
|
||||
if cached:
|
||||
|
@ -446,7 +446,7 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
|
|||
)
|
||||
return file_handle, media
|
||||
|
||||
def _cache_media(self, msg, file, file_handle,
|
||||
async def _cache_media(self, msg, file, file_handle,
|
||||
force_document=False):
|
||||
if file and msg and isinstance(file_handle,
|
||||
custom.InputSizedFile):
|
||||
|
@ -457,6 +457,6 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
|
|||
to_cache = utils.get_input_photo(msg.media.photo)
|
||||
else:
|
||||
to_cache = utils.get_input_document(msg.media.document)
|
||||
self.session.cache_file(md5, size, to_cache)
|
||||
await self.session.cache_file(md5, size, to_cache)
|
||||
|
||||
# endregion
|
||||
|
|
|
@ -48,7 +48,7 @@ class UserMethods(TelegramBaseClient):
|
|||
exceptions.append(e)
|
||||
results.append(None)
|
||||
continue
|
||||
self.session.process_entities(result)
|
||||
await self.session.process_entities(result)
|
||||
exceptions.append(None)
|
||||
results.append(result)
|
||||
request_index += 1
|
||||
|
@ -58,7 +58,7 @@ class UserMethods(TelegramBaseClient):
|
|||
return results
|
||||
else:
|
||||
result = await future
|
||||
self.session.process_entities(result)
|
||||
await self.session.process_entities(result)
|
||||
return result
|
||||
except (errors.ServerError, errors.RpcCallFailError) as e:
|
||||
__log__.warning('Telegram is having internal issues %s: %s',
|
||||
|
@ -288,7 +288,7 @@ class UserMethods(TelegramBaseClient):
|
|||
|
||||
try:
|
||||
# First try to get the entity from cache, otherwise figure it out
|
||||
return self.session.get_input_entity(peer)
|
||||
return await self.session.get_input_entity(peer)
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
@ -393,7 +393,7 @@ class UserMethods(TelegramBaseClient):
|
|||
try:
|
||||
# Nobody with this username, maybe it's an exact name/title
|
||||
return await self.get_entity(
|
||||
self.session.get_input_entity(string))
|
||||
await self.session.get_input_entity(string))
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
|
|
@ -7,5 +7,5 @@ from .authenticator import do_authentication
|
|||
from .mtprotosender import MTProtoSender
|
||||
from .connection import (
|
||||
ConnectionTcpFull, ConnectionTcpAbridged, ConnectionTcpObfuscated,
|
||||
ConnectionTcpIntermediate, ConnectionHttp
|
||||
ConnectionTcpIntermediate, ConnectionHttp,Connection
|
||||
)
|
||||
|
|
|
@ -3,3 +3,4 @@ from .tcpabridged import ConnectionTcpAbridged
|
|||
from .tcpobfuscated import ConnectionTcpObfuscated
|
||||
from .tcpintermediate import ConnectionTcpIntermediate
|
||||
from .http import ConnectionHttp
|
||||
from .common import Connection
|
||||
|
|
|
@ -15,7 +15,7 @@ from ..tl.types import (
|
|||
MsgNewDetailedInfo, NewSessionCreated, MsgDetailedInfo, MsgsStateReq,
|
||||
MsgsStateInfo, MsgsAllInfo, MsgResendReq, upload
|
||||
)
|
||||
|
||||
from ..utils import AsyncClassWrapper
|
||||
__log__ = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
@ -262,7 +262,7 @@ class MTProtoSender:
|
|||
await authenticator.do_authentication(plain)
|
||||
|
||||
if self._auth_key_callback:
|
||||
self._auth_key_callback(self.state.auth_key)
|
||||
await self._auth_key_callback(self.state.auth_key)
|
||||
|
||||
break
|
||||
except (SecurityError, AssertionError) as e:
|
||||
|
@ -570,7 +570,7 @@ class MTProtoSender:
|
|||
__log__.debug('Handling update {}'
|
||||
.format(message.obj.__class__.__name__))
|
||||
if self._update_callback:
|
||||
self._update_callback(message.obj)
|
||||
await self._update_callback(message.obj)
|
||||
|
||||
async def _handle_pong(self, message):
|
||||
"""
|
||||
|
|
47
telethon/test.py
Normal file
47
telethon/test.py
Normal file
|
@ -0,0 +1,47 @@
|
|||
import inspect
|
||||
import asyncio
|
||||
from telethon.utils import AsyncClassWrapper
|
||||
|
||||
class session:
|
||||
test1='test1'
|
||||
async def test2(self,arg):
|
||||
print(arg)
|
||||
|
||||
def test3(self,arg):
|
||||
print("test3")
|
||||
|
||||
@property
|
||||
def test4(self):
|
||||
return "test4"
|
||||
|
||||
async def t():
|
||||
s = AsyncClassWrapper(session())
|
||||
print(s.test1)
|
||||
await s.test2("test2")
|
||||
await s.test3("k")
|
||||
print(s.test4)
|
||||
s.test5 = "hey"
|
||||
print(s.test5)
|
||||
|
||||
|
||||
|
||||
asyncio.get_event_loop().run_until_complete(t())
|
||||
import inspect
|
||||
import asyncio
|
||||
from telethon.client import TelegramClient
|
||||
|
||||
|
||||
|
||||
api_hash = ""
|
||||
api_id = 12345
|
||||
async def main():
|
||||
client = TelegramClient(None, api_id, api_hash)
|
||||
await client.session.set_dc(2, '149.154.167.40', 443)
|
||||
await client.start(
|
||||
phone='9996621234', code_callback=lambda: '22222'
|
||||
)
|
||||
print(await client.get_dialogs())
|
||||
await client.send_message("me","heyh")
|
||||
|
||||
|
||||
asyncio.get_event_loop().run_until_complete(main())
|
|
@ -16,6 +16,7 @@ from types import GeneratorType
|
|||
from .extensions import markdown, html
|
||||
from .helpers import add_surrogate, del_surrogate
|
||||
from .tl import types
|
||||
import inspect
|
||||
|
||||
try:
|
||||
import hachoir
|
||||
|
@ -970,3 +971,20 @@ def get_appropriated_part_size(file_size):
|
|||
return 512
|
||||
|
||||
raise ValueError('File size too large')
|
||||
|
||||
class AsyncClassWrapper:
|
||||
def __init__(self, wrapped):
|
||||
self.wrapped = wrapped
|
||||
|
||||
def __getattr__(self, item):
|
||||
w = getattr(self.wrapped, item)
|
||||
async def wrapper(*args,**kwargs):
|
||||
val = w(*args, **kwargs)
|
||||
return await val if inspect.isawaitable(val) else val
|
||||
|
||||
if inspect.isfunction(w) or inspect.ismethod(w):
|
||||
return wrapper
|
||||
elif isinstance(w,property):
|
||||
return w.fget(self.wrapped)
|
||||
else:
|
||||
return w
|
||||
|
|
Loading…
Reference in New Issue
Block a user