ably / ably-python

Python client library SDK for Ably realtime messaging service
https://ably.com/download
Apache License 2.0
49 stars 24 forks source link

Add types + Make library PEP-561 compatible #528

Open Andrioden opened 1 year ago

Andrioden commented 1 year ago

Why

I love types, and want everything in python typed as strongly as possible within reason. This creates more readable code and makes refactoring easier and safer. If i debug my code that depend on ably code, i find myself stepping into untyped ably code, this makes it harder to read.

The following import triggers an mypy error

game\utils\event_publisher.py

from ably import AblyRest

Running mypy .

game\utils\event_publisher.py:6: error: Skipping analyzing "ably": module is installed, but missing library stubs or py.typed marker  [import]
game\utils\event_publisher.py:6: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports

In addition i see the very prominent Channel.publish is not typed.

My suggestions are

Read more here

┆Issue is synchronized with this Jira Task by Unito

sync-by-unito[bot] commented 1 year ago

➤ Automation for Jira commented:

The link to the corresponding Jira issue is https://ably.atlassian.net/browse/SDK-3842

Andrioden commented 1 year ago

The "fix" in my repo is to add the following to my config

pyproject.toml

[[tool.mypy.overrides]]
module = "ably.*"
ignore_missing_imports = true
sacOO7 commented 1 year ago

@Andrioden even I agree with you. Typing surely brings more power to the code. In the subsequent iterations, we will surely cover missing types from the code.

sacOO7 commented 1 year ago

Feel free to raise more suggestions and create a PR if possible : )

sacOO7 commented 1 year ago

Related to #480