Compare commits

..

5 Commits

Author SHA1 Message Date
df170048af Bump version: 0.20.1.1 → 0.20.1.2 2020-06-19 13:37:02 +03:00
8ca845cf17 Add damage amount to inventory bomb 2020-06-19 13:36:45 +03:00
ce7874fbf5 Bump version: 0.20.1 → 0.20.1.1 2020-06-18 10:14:50 +03:00
6abfc98fbd Test requirements 2020-06-18 10:13:55 +03:00
66f0e648df Citizen.to_json() bugfixed and optimised 2020-06-18 10:10:22 +03:00
6 changed files with 42 additions and 17 deletions

View File

@ -4,8 +4,8 @@
__author__ = """Eriks Karls""" __author__ = """Eriks Karls"""
__email__ = 'eriks@72.lv' __email__ = 'eriks@72.lv'
__version__ = '0.20.1' __version__ = '0.20.1.2'
__commit_id__ = "a825917" __commit_id__ = "8ca845c"
from erepublik import classes, utils from erepublik import classes, utils
from erepublik.citizen import Citizen from erepublik.citizen import Citizen

View File

@ -321,6 +321,14 @@ class BaseCitizen(CitizenAPI):
durability=item.get('duration', 0), icon=icon, name=name) durability=item.get('duration', 0), icon=icon, name=name)
if item.get('type') in ('damageBoosters', "aircraftDamageBoosters"): if item.get('type') in ('damageBoosters', "aircraftDamageBoosters"):
data = {data['durability']: data} data = {data['durability']: data}
elif item.get('type') == 'bomb':
firepower = 0
try:
firepower = item.get('attributes').get('firePower').get('value', 0)
except AttributeError:
pass
finally:
data.update(fire_power=firepower)
else: else:
data = {data['quality']: data} data = {data['quality']: data}
final_items[kind].update(data) final_items[kind].update(data)
@ -427,7 +435,7 @@ class BaseCitizen(CitizenAPI):
def __dict__(self): def __dict__(self):
ret = super().__dict__.copy() ret = super().__dict__.copy()
ret.pop('stop_threads', None) ret.pop('stop_threads', None)
ret.pop('_Citizen__last_war_update_data', None) ret.pop('_CitizenMilitary__last_war_update_data', None)
return ret return ret

View File

@ -1,7 +1,7 @@
import datetime import datetime
import hashlib import hashlib
import threading import threading
from collections import defaultdict, deque from collections import defaultdict
from decimal import Decimal from decimal import Decimal
from typing import Any, Dict, List, NamedTuple, Tuple, Union, Optional from typing import Any, Dict, List, NamedTuple, Tuple, Union, Optional
@ -65,11 +65,20 @@ class Holding:
return dict(frm=frm, wrm=wrm) return dict(frm=frm, wrm=wrm)
def __str__(self): def __str__(self):
return f"Holding (#{self.id}) with {len(self.companies)} compan{'y' if len(self.companies) % 10 == 1 else 'ies'}" name = f"Holding (#{self.id}) with {len(self.companies)} "
if len(self.companies) % 10 == 1:
name += "company"
else:
name += "companies"
return name
def __repr__(self): def __repr__(self):
return str(self) return str(self)
@property
def __dict__(self):
return dict(name=str(self), id=self.id, region=self.region, companies=self.companies, wam_count=self.wam_count)
class Company: class Company:
holding: Holding holding: Holding
@ -172,6 +181,13 @@ class Company:
def __repr__(self): def __repr__(self):
return str(self) return str(self)
@property
def __dict__(self):
return dict(name=str(self), holding=self.holding.id, id=self.id, quality=self.quality, is_raw=self.is_raw,
raw_usage=self.raw_usage, products_made=self.products_made, wam_enabled=self.wam_enabled,
can_wam=self.can_wam, cannot_wam_reason=self.cannot_wam_reason, industry=self.industry,
already_worked=self.already_worked, preset_works=self.preset_works)
class MyCompanies: class MyCompanies:
work_units: int = 0 work_units: int = 0
@ -278,6 +294,11 @@ class MyCompanies:
holding.companies.clear() holding.companies.clear()
self.companies.clear() self.companies.clear()
@property
def __dict__(self):
return dict(name=str(self), work_units=self.work_units, next_ot_time=self.next_ot_time, ff_lockdown=self.ff_lockdown, holdings=self.holdings,
company_count=len(self.companies))
class Config: class Config:
email = "" email = ""
@ -576,7 +597,7 @@ class MyJSONEncoder(json.JSONEncoder):
return float(f"{o:.02f}") return float(f"{o:.02f}")
elif isinstance(o, datetime.datetime): elif isinstance(o, datetime.datetime):
return dict(__type__='datetime', date=o.strftime("%Y-%m-%d"), time=o.strftime("%H:%M:%S"), return dict(__type__='datetime', date=o.strftime("%Y-%m-%d"), time=o.strftime("%H:%M:%S"),
tzinfo=o.tzinfo.tzname if o.tzinfo else None) tzinfo=str(o.tzinfo) if o.tzinfo else None)
elif isinstance(o, datetime.date): elif isinstance(o, datetime.date):
return dict(__type__='date', date=o.strftime("%Y-%m-%d")) return dict(__type__='date', date=o.strftime("%Y-%m-%d"))
elif isinstance(o, datetime.timedelta): elif isinstance(o, datetime.timedelta):
@ -586,18 +607,14 @@ class MyJSONEncoder(json.JSONEncoder):
return dict(headers=o.headers.__dict__, url=o.url, text=o.text) return dict(headers=o.headers.__dict__, url=o.url, text=o.text)
elif hasattr(o, '__dict__'): elif hasattr(o, '__dict__'):
return o.__dict__ return o.__dict__
elif isinstance(o, (deque, set)): elif isinstance(o, set):
return list(o) return list(o)
elif isinstance(o, Citizen): elif isinstance(o, Citizen):
return o.to_json() return o.to_json()
try: try:
return super().default(o) return super().default(o)
except TypeError as e: except Exception as e: # noqa
name = None return 'Object is not JSON serializable'
for ___, ____ in globals().copy().items():
if id(o) == id(____):
name = ___
return dict(__error__=str(e), __type__=str(type(o)), __name__=name)
class BattleSide: class BattleSide:

View File

@ -8,6 +8,7 @@ pip==20.1.1
PyInstaller==3.6 PyInstaller==3.6
pytz==2020.1 pytz==2020.1
requests==2.23.0 requests==2.23.0
responses==0.10.15
setuptools==47.1.1 setuptools==47.1.1
Sphinx==3.1.1 Sphinx==3.1.1
tox==3.15.2 tox==3.15.2

View File

@ -1,10 +1,9 @@
[bumpversion] [bumpversion]
current_version = 0.20.1 current_version = 0.20.1.2
commit = True commit = True
tag = True tag = True
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\.?(?P<dev>\d+)? parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\.?(?P<dev>\d+)?
serialize = serialize = {major}.{minor}.{patch}.{dev}
{major}.{minor}.{patch}.{dev}
{major}.{minor}.{patch} {major}.{minor}.{patch}
[bumpversion:file:setup.py] [bumpversion:file:setup.py]

View File

@ -43,6 +43,6 @@ setup(
test_suite='tests', test_suite='tests',
tests_require=test_requirements, tests_require=test_requirements,
url='https://github.com/eeriks/erepublik/', url='https://github.com/eeriks/erepublik/',
version='0.20.1', version='0.20.1.2',
zip_safe=False, zip_safe=False,
) )