From 61df989cb4b21a5f20482765151751471b06ec39 Mon Sep 17 00:00:00 2001 From: KEriks Date: Fri, 23 Jul 2021 10:12:00 +0300 Subject: [PATCH] Catch connection errors. Not logged in bugfix. Minor tweaks. Black for setup --- erepublik/access_points.py | 7 +++++- erepublik/citizen.py | 9 ++++---- setup.cfg | 8 +++---- setup.py | 44 +++++++++++++++++++------------------- 4 files changed, 37 insertions(+), 31 deletions(-) diff --git a/erepublik/access_points.py b/erepublik/access_points.py index ec447c8..b9b035a 100644 --- a/erepublik/access_points.py +++ b/erepublik/access_points.py @@ -5,6 +5,7 @@ import time from typing import Any, Dict, List, Mapping, Union from requests import Response, Session +from requests.exceptions import ConnectionError from requests_toolbelt.utils import dump from erepublik import constants, utils @@ -43,7 +44,11 @@ class SlowRequests(Session): def request(self, method, url, *args, **kwargs): self._slow_down_requests() self._log_request(url, method, **kwargs) - resp = super().request(method, url, *args, **kwargs) + try: + resp = super().request(method, url, *args, **kwargs) + except ConnectionError: + time.sleep(1) + return self.request(method, url, *args, **kwargs) # self._log_response(resp) return resp diff --git a/erepublik/citizen.py b/erepublik/citizen.py index 2251dba..845feb6 100644 --- a/erepublik/citizen.py +++ b/erepublik/citizen.py @@ -177,9 +177,10 @@ class BaseCitizen(access_points.CitizenAPI): if html is None: self._get_main() return - ugly_js = re.search(r'"promotions":\s*(\[{?.*?}?])', html).group(1) - promos = utils.json.loads(utils.normalize_html_json(ugly_js)) - if self.promos is None: + ugly_js_match = re.search(r'"promotions":\s*(\[{?.*?}?])', html) + ugly_js = ugly_js_match.group(1) if ugly_js_match else "null" + promos = utils.json_loads(utils.normalize_html_json(ugly_js)) + if promos is None: self.promos = {} else: self.promos = {k: v for k, v in self.promos.items() if v > self.now} @@ -2920,7 +2921,7 @@ class _Citizen( self.send_my_companies_update() sleep_seconds = (start_time - self.now).total_seconds() self.stop_threads.wait(sleep_seconds if sleep_seconds > 0 else 0) - except: # noqa + except Exception as e: # noqa self.report_error("State updater crashed") def send_state_update(self): diff --git a/setup.cfg b/setup.cfg index 5ea24ba..8fcb5c2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -7,12 +7,12 @@ serialize = {major}.{minor}.{patch}.{dev} {major}.{minor}.{patch} [bumpversion:file:setup.py] -search = version='{current_version}' -replace = version='{new_version}' +search = version="{current_version}" +replace = version="{new_version}" [bumpversion:file:erepublik/__init__.py] -search = __version__ = '{current_version}' -replace = __version__ = '{new_version}' +search = __version__ = "{current_version}" +replace = __version__ = "{new_version}" [bdist_wheel] universal = 1 diff --git a/setup.py b/setup.py index 30bec03..2be39b1 100644 --- a/setup.py +++ b/setup.py @@ -5,17 +5,17 @@ from setuptools import find_packages, setup -with open('README.rst') as readme_file: +with open("README.rst") as readme_file: readme = readme_file.read() -with open('HISTORY.rst') as history_file: +with open("HISTORY.rst") as history_file: history = history_file.read() requirements = [ - 'PySocks==1.7.1', - 'pytz==2021.1', - 'requests==2.26.0', - 'requests-toolbelt==0.9.1', + "PySocks==1.7.1", + "pytz==2021.1", + "requests==2.26.0", + "requests-toolbelt==0.9.1", ] setup_requirements = [] @@ -26,30 +26,30 @@ test_requirements = [ setup( author="Eriks Karls", - author_email='eriks@72.lv', + author_email="eriks@72.lv", classifiers=[ - 'Development Status :: 4 - Beta', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: MIT License', - 'Natural Language :: English', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", ], description="Python package for automated eRepublik playing", entry_points={}, install_requires=requirements, license="MIT license", - long_description=readme + '\n\n' + history, + long_description=readme + "\n\n" + history, include_package_data=True, - keywords='erepublik', - name='eRepublik', - packages=find_packages(include=['erepublik']), - python_requires='>=3.8, <4', + keywords="erepublik", + name="eRepublik", + packages=find_packages(include=["erepublik"]), + python_requires=">=3.8, <4", setup_requires=setup_requirements, - test_suite='tests', + test_suite="tests", tests_require=test_requirements, - url='https://github.com/eeriks/erepublik/', - version='0.25.1.2', + url="https://github.com/eeriks/erepublik/", + version="0.25.1.2", zip_safe=False, )