Skip to content

Releases: mathsman5133/coc.py

v0.1.2

25 Apr 03:56
Compare
Choose a tag to compare

v0.1.2
BugFixes
Fixed 2 problems which meant automatic token resets weren’t working. Please report any more bugs!

v0.1.1

24 Apr 10:34
Compare
Choose a tag to compare

v0.1.1

BugFixes

- Stop nested asyncio loops from failing.

Important
  • New methods

    • :meth:.Client.get_clans(tags) returns an AsyncIterator of clans.
    • :meth:.Client.get_current_wars(tags) returns an AsyncIterator of current wars
    • :meth:.Client.get_players(tags) returns an AsyncIterator of players
    • :meth:.SearchClan.get_detailed_members returns an AsyncIterator of :class:.SearchPlayer for clans members
    • :meth:.Client.set_cache(*cache_names, max_size, expiry) enables you to override the default cache settings
      on a per-cache basis. Expiry is in seconds.
  • Removed parameters

    • json=False on all calls has been removed. Use :attr:DataClass._data to get the dict as returned by the API
      if you so desire
  • Implemented ratelimits

    • throttle_limit has been added as a parameter to :class:.Client. This is the number of calls per token, per second,
      to be made
  • asyncio.Semaphore lock has been implemented

  • New cache structure and implementation.

    • Max size and expiry (in seconds) can be set with :meth:Client.set_cache
    • New instances of cache on a per-object (returned) basis, so different methods will implement
      different instances of the cache.
    • lru-dict has been added as a requirement.
    • LRU is very fast and memory efficient, written in C.
  • Enum for :class:CacheType has been implemented. This is the preferred way to pass in cache_names to :meth:Client.set_cache
    as string names may change.

    • Can be called with :meth:Client.set_cache(CacheType.search_clans, max_size=128, expiry=10)
  • New Exception: :exc:InvalidCredentials

    • This essentially replaces the (now redundant) :exc:InvalidToken exception, and is called when the email/pass pair
      passed is incorrect.
  • New util function: :func:coc.utils.clean_tag(tag, prefix='#') will return a 'cleaned up' version of the tag.
    It will:

    • Make all letters UPPERCASE
    • Replace o ('oh') with 0 (zero)s
    • Remove non-alphanumeric and whitespace

https://cocpy.readthedocs.io/en/latest/changelog.html#v0-1-1

v0.1.0

21 Apr 14:20
Compare
Choose a tag to compare

v0.1.0

BugFixes

- Fixed bug with loops breaking when reloading the client in a discord cog.
- A more specific error, `aiohttp.ContentTypeError` is raised when parsing non-json responses.

Important
  • Big thanks to Jab for some of these.

  • Big one! Client now only accepts an email/password pair rather than tokens.
    This pair is what you use to login to https://developer.clashofclans.com/#/login
    and will allow the client to automatically use, create, reset and find tokens,
    making it a much more streamlined process.

  • As such, the following parameters to client have been added:

    • key_count: int: the number of tokens to rotate between when making API requests.
      This defaults to 1, and can be between 1 and 10

    • key_names: str: The name to use when creating tokens on the developer page.
      This defaults to Created with coc.py Client

  • Email and Password are now mandatory parameters and must be passed

  • update_tokens parameter has been removed. The client will automatically reset bad tokens.

  • In order to keep consistency with the official API docs, token has been renamed to key.
    This affects the following method/parameters:

    • on_token_reset(new_token) --> on_key_reset(new_key)
    • HTTPClient.login() --> HTTPClient.get_keys()

    and otherwise consistent use of key during internals, docs, code and examples.

  • pytz and python-dateutil have both been removed as dependencies due to the ability to
    parse timestamps manually. This has been added to utils as a function: from_timestamp(ts),
    returning a utc-datetime object.

  • Dataclasses have received a makeover! Many new attributes are present, these are listed below.
    Most importantly, any property beginning with an underscore (_) use and return iterator objects.
    These are not lists, and relevant python documentation is here:
    https://docs.python.org/3/glossary.html#term-iterator.

    These are up to 12x faster than lists, and
    as such for those who are concerned about speed, performance and memory should use these, while
    for the majority, calling the regular property should be fine (usually returning a list rather than iter).

    • :attr:SearchClan._members
    • :attr:WarClan._members
    • :attr:WarClan._attacks
    • :attr:WarClan._defenses
    • :attr:WarMember._attacks
    • :attr:WarMember._defenses
    • :attr:SearchPlayer._achievements
    • :attr:CurrentWar._attacks
    • :attr:CurrentWar._members
    • :attr:LeagueClan._members
    • :attr:LeagueGroup._clans
  • The following new attributes were added:

    • :attr:SearchClan.member_dict
    • :attr:WarClan.member_dict
    • :attr:WarClan.attacks
    • :attr:WarClan.defenses
    • :attr:WarMember.attacks
    • :attr:WarMember.defenses
    • :attr:SearchPlayer.achievements_dict
    • :attr:SearchPlayer.troops_dict
    • :attr:SearchPlayer.heroes_dict
    • :attr:SearchPlayer.spells_dict
    • :attr:Timestamp.time
  • The folowwing new methods were added:

    • SearchClan.get_member(tag)
    • CurrentWar.get_member(tag)
  • New utility functions:

    • utils.get(iterable, **attrs)

      • Searches the iterable until a value with the given attribute is found.
        Unlike filter(), this will return when the first value is found.
    • utils.find(function, iterable)

      • Searches through the iterable until a value which satisfies the function is found.
    • from_timestamp(ts)

      • Parses an ISO8601 timestamp as returned by the COC API into a datetime object

Documentation:

- Many docstrings were reformatted or worded, with punctuation and other typo's fixed
- All new properties, attributes and methods have been documented.
- Update some examples, including a `clan_info` function in discord bots (Thanks, Tuba).

v0.0.5

16 Apr 21:26
Compare
Choose a tag to compare

Various bug fixes, adding Forbidden exception and on_token_reset. For more info please see the changelog.