python-twitchchat 1.0.1__tar.gz → 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: python-twitchchat
3
- Version: 1.0.1
3
+ Version: 1.1.0
4
4
  Summary: Asyncio client for Twitch chat (IRC): typed events, callbacks and async iteration.
5
5
  Project-URL: Homepage, https://github.com/shughes-uk/python-twitchchat
6
6
  Author: shughes-uk
@@ -12,10 +12,11 @@ Classifier: Framework :: AsyncIO
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Programming Language :: Python :: 3
14
14
  Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Programming Language :: Python :: 3.14
15
16
  Classifier: Programming Language :: Python :: 3.15
16
17
  Classifier: Topic :: Communications :: Chat :: Internet Relay Chat
17
18
  Classifier: Typing :: Typed
18
- Requires-Python: >=3.15
19
+ Requires-Python: >=3.14
19
20
  Description-Content-Type: text/markdown
20
21
 
21
22
  # python-twitchchat
@@ -25,7 +26,7 @@ It has no runtime dependencies and gives you typed events, an async iterator,
25
26
  callback registration, rate-limited sending, automatic PING/PONG and automatic
26
27
  reconnects.
27
28
 
28
- - **Requirements:** Python 3.15 or newer, standard library only.
29
+ - **Requirements:** Python 3.14 or newer, standard library only.
29
30
  - **Install:** `pip install python-twitchchat` or `uv add python-twitchchat`. The import name is `twitchchat`.
30
31
  - Connects to `irc.chat.twitch.tv:6697` over TLS.
31
32
 
@@ -170,8 +171,8 @@ uv run examples/watch_chat.py --seconds 60 somebigchannel anotherone
170
171
 
171
172
  ## Development
172
173
 
173
- The project uses [uv](https://docs.astral.sh/uv/). `.python-version` pins
174
- Python 3.15, which uv downloads automatically.
174
+ The project uses [uv](https://docs.astral.sh/uv/). It supports Python 3.14 and 3.15;
175
+ `.python-version` pins 3.15 for development, which uv downloads automatically.
175
176
 
176
177
  ```sh
177
178
  uv sync # create .venv with dev tools (ruff, ty, pytest, pytest-asyncio)
@@ -5,7 +5,7 @@ It has no runtime dependencies and gives you typed events, an async iterator,
5
5
  callback registration, rate-limited sending, automatic PING/PONG and automatic
6
6
  reconnects.
7
7
 
8
- - **Requirements:** Python 3.15 or newer, standard library only.
8
+ - **Requirements:** Python 3.14 or newer, standard library only.
9
9
  - **Install:** `pip install python-twitchchat` or `uv add python-twitchchat`. The import name is `twitchchat`.
10
10
  - Connects to `irc.chat.twitch.tv:6697` over TLS.
11
11
 
@@ -150,8 +150,8 @@ uv run examples/watch_chat.py --seconds 60 somebigchannel anotherone
150
150
 
151
151
  ## Development
152
152
 
153
- The project uses [uv](https://docs.astral.sh/uv/). `.python-version` pins
154
- Python 3.15, which uv downloads automatically.
153
+ The project uses [uv](https://docs.astral.sh/uv/). It supports Python 3.14 and 3.15;
154
+ `.python-version` pins 3.15 for development, which uv downloads automatically.
155
155
 
156
156
  ```sh
157
157
  uv sync # create .venv with dev tools (ruff, ty, pytest, pytest-asyncio)
@@ -4,7 +4,7 @@ dynamic = ["version"]
4
4
  description = "Asyncio client for Twitch chat (IRC): typed events, callbacks and async iteration."
5
5
  readme = "README.md"
6
6
  authors = [{ name = "shughes-uk" }]
7
- requires-python = ">=3.15"
7
+ requires-python = ">=3.14"
8
8
  license = "MIT"
9
9
  license-files = ["LICENSE"]
10
10
  dependencies = []
@@ -15,6 +15,7 @@ classifiers = [
15
15
  "Intended Audience :: Developers",
16
16
  "Programming Language :: Python :: 3",
17
17
  "Programming Language :: Python :: 3 :: Only",
18
+ "Programming Language :: Python :: 3.14",
18
19
  "Programming Language :: Python :: 3.15",
19
20
  "Topic :: Communications :: Chat :: Internet Relay Chat",
20
21
  "Typing :: Typed",
@@ -56,7 +57,7 @@ filterwarnings = ["error"]
56
57
 
57
58
  [tool.ruff]
58
59
  line-length = 100
59
- target-version = "py315"
60
+ target-version = "py314"
60
61
  src = ["src", "tests", "examples"]
61
62
 
62
63
  [tool.ruff.lint]
@@ -82,7 +83,7 @@ convention = "google"
82
83
  docstring-code-format = true
83
84
 
84
85
  [tool.ty.environment]
85
- python-version = "3.15"
86
+ python-version = "3.14"
86
87
 
87
88
  [tool.ty.src]
88
89
  include = ["src", "tests", "examples"]
@@ -8,12 +8,14 @@ import secrets
8
8
  import weakref
9
9
  from collections import deque
10
10
  from collections.abc import AsyncIterator, Awaitable, Callable, Iterable
11
- from typing import Protocol, Self, overload
12
- lazy import ssl
11
+ from typing import TYPE_CHECKING, Protocol, Self, overload
13
12
 
14
13
  from .events import ChatMessage, Connected, Event, Notice, Reconnect, event_from_irc
15
14
  from .irc import format_line, parse_line
16
15
 
16
+ if TYPE_CHECKING:
17
+ import ssl
18
+
17
19
  __all__ = [
18
20
  "DEFAULT_HOST",
19
21
  "DEFAULT_PORT",
@@ -2,8 +2,10 @@
2
2
 
3
3
  from dataclasses import dataclass, field
4
4
  from datetime import UTC, datetime
5
+ from typing import TYPE_CHECKING
5
6
 
6
- lazy from .irc import IrcMessage
7
+ if TYPE_CHECKING:
8
+ from .irc import IrcMessage
7
9
 
8
10
  __all__ = [
9
11
  "ChatMessage",
@@ -3,7 +3,7 @@
3
3
  import asyncio
4
4
  import gc
5
5
  import logging
6
- lazy from collections.abc import AsyncIterator
6
+ from typing import TYPE_CHECKING
7
7
 
8
8
  import pytest
9
9
 
@@ -20,6 +20,9 @@ from twitchchat import (
20
20
  UserNotice,
21
21
  )
22
22
 
23
+ if TYPE_CHECKING:
24
+ from collections.abc import AsyncIterator
25
+
23
26
  PRIVMSG = (
24
27
  "@badges=subscriber/1;display-name=Foo;id=m1;tmi-sent-ts=1700000000000"
25
28
  " :foo!foo@foo.tmi.twitch.tv PRIVMSG #{chan} :{text}"