Skip to content

Commit 50721e8

Browse files
committed
Prepare 19.0.0 release.
1 parent 03a9cd0 commit 50721e8

File tree

5 files changed

+35
-30
lines changed

5 files changed

+35
-30
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ This project adheres to [Semantic Versioning](https://semver.org/) since version
66

77
## [Unreleased]
88

9+
## [19.0.0] - 2025-06-13
10+
11+
Finished port to SDL3, this has caused several breaking changes from SDL such as lowercase key constants now being uppercase and mouse events returning `float` instead of `int`.
12+
Be sure to run [Mypy](https://mypy.readthedocs.io/en/stable/getting_started.html) on your projects to catch any issues from this update.
13+
914
### Changed
1015

1116
- Updated libtcod to 2.1.1

tcod/sdl/audio.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ class AudioDevice:
217217
.. versionchanged:: 16.0
218218
Can now be used as a context which will close the device on exit.
219219
220-
.. versionchanged:: Unreleased
220+
.. versionchanged:: 19.0
221221
Removed `spec` and `callback` attribute.
222222
223223
`queued_samples`, `queue_audio`, and `dequeue_audio` moved to :any:`AudioStream` class.
@@ -269,7 +269,7 @@ def __init__(
269269
self.is_physical: Final[bool] = bool(lib.SDL_IsAudioDevicePhysical(device_id))
270270
"""True of this is a physical device, or False if this is a logical device.
271271
272-
.. versionadded:: Unreleased
272+
.. versionadded:: 19.0
273273
"""
274274

275275
def __repr__(self) -> str:
@@ -294,7 +294,7 @@ def __repr__(self) -> str:
294294
def name(self) -> str:
295295
"""Name of the device.
296296
297-
.. versionadded:: Unreleased
297+
.. versionadded:: 19.0
298298
"""
299299
return str(ffi.string(_check_p(lib.SDL_GetAudioDeviceName(self.device_id))), encoding="utf-8")
300300

@@ -304,7 +304,7 @@ def gain(self) -> float:
304304
305305
Default is 1.0 but can be set higher or zero.
306306
307-
.. versionadded:: Unreleased
307+
.. versionadded:: 19.0
308308
"""
309309
return _check_float(lib.SDL_GetAudioDeviceGain(self.device_id), failure=-1.0)
310310

@@ -320,7 +320,7 @@ def open(
320320
) -> Self:
321321
"""Open a new logical audio device for this device.
322322
323-
.. versionadded:: Unreleased
323+
.. versionadded:: 19.0
324324
325325
.. seealso::
326326
https://wiki.libsdl.org/SDL3/SDL_OpenAudioDevice
@@ -349,7 +349,7 @@ def _sample_size(self) -> int:
349349
def stopped(self) -> bool:
350350
"""Is True if the device has failed or was closed.
351351
352-
.. deprecated:: Unreleased
352+
.. deprecated:: 19.0
353353
No longer used by the SDL3 API.
354354
"""
355355
return bool(not hasattr(self, "device_id"))
@@ -417,7 +417,7 @@ def close(self) -> None:
417417
def __enter__(self) -> Self:
418418
"""Return self and enter a managed context.
419419
420-
.. deprecated:: Unreleased
420+
.. deprecated:: 19.0
421421
Use :func:`contextlib.closing` if you want to close this device after a context.
422422
"""
423423
return self
@@ -443,7 +443,7 @@ def new_stream(
443443
) -> AudioStream:
444444
"""Create, bind, and return a new :any:`AudioStream` for this device.
445445
446-
.. versionadded:: Unreleased
446+
.. versionadded:: 19.0
447447
"""
448448
new_stream = AudioStream.new(format=format, channels=channels, frequency=frequency)
449449
self.bind((new_stream,))
@@ -463,7 +463,7 @@ def bind(self, streams: Iterable[AudioStream], /) -> None:
463463
class AudioStreamCallbackData:
464464
"""Data provided to AudioStream callbacks.
465465
466-
.. versionadded:: Unreleased
466+
.. versionadded:: 19.0
467467
"""
468468

469469
additional_bytes: int
@@ -487,7 +487,7 @@ class AudioStream:
487487
488488
This class is commonly created with :any:`AudioDevice.new_stream` which creates a new stream bound to the device.
489489
490-
..versionadded:: Unreleased
490+
..versionadded:: 19.0
491491
"""
492492

493493
__slots__ = ("__weakref__", "_stream_p")
@@ -819,10 +819,10 @@ class BasicMixer:
819819
820820
.. versionadded:: 13.6
821821
822-
.. versionchanged:: Unreleased
822+
.. versionchanged:: 19.0
823823
Added `frequency` and `channels` parameters.
824824
825-
.. deprecated:: Unreleased
825+
.. deprecated:: 19.0
826826
Changes in the SDL3 API have made this classes usefulness questionable.
827827
This class should be replaced with custom streams.
828828
"""
@@ -927,7 +927,7 @@ def _sdl_audio_stream_callback(userdata: Any, stream_p: Any, additional_amount:
927927
def get_devices() -> dict[str, AudioDevice]:
928928
"""Iterate over the available audio output devices.
929929
930-
.. versionchanged:: Unreleased
930+
.. versionchanged:: 19.0
931931
Now returns a dictionary of :any:`AudioDevice`.
932932
"""
933933
tcod.sdl.sys.init(tcod.sdl.sys.Subsystem.AUDIO)
@@ -942,7 +942,7 @@ def get_devices() -> dict[str, AudioDevice]:
942942
def get_capture_devices() -> dict[str, AudioDevice]:
943943
"""Iterate over the available audio capture devices.
944944
945-
.. versionchanged:: Unreleased
945+
.. versionchanged:: 19.0
946946
Now returns a dictionary of :any:`AudioDevice`.
947947
"""
948948
tcod.sdl.sys.init(tcod.sdl.sys.Subsystem.AUDIO)
@@ -960,7 +960,7 @@ def get_default_playback() -> AudioDevice:
960960
Example:
961961
playback_device = tcod.sdl.audio.get_default_playback().open()
962962
963-
.. versionadded:: Unreleased
963+
.. versionadded:: 19.0
964964
"""
965965
tcod.sdl.sys.init(tcod.sdl.sys.Subsystem.AUDIO)
966966
return AudioDevice(ffi.cast("SDL_AudioDeviceID", lib.SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK))
@@ -972,7 +972,7 @@ def get_default_recording() -> AudioDevice:
972972
Example:
973973
recording_device = tcod.sdl.audio.get_default_recording().open()
974974
975-
.. versionadded:: Unreleased
975+
.. versionadded:: 19.0
976976
"""
977977
tcod.sdl.sys.init(tcod.sdl.sys.Subsystem.AUDIO)
978978
return AudioDevice(ffi.cast("SDL_AudioDeviceID", lib.SDL_AUDIO_DEVICE_DEFAULT_RECORDING))
@@ -982,7 +982,7 @@ def get_default_recording() -> AudioDevice:
982982
class AllowedChanges(enum.IntFlag):
983983
"""Which parameters are allowed to be changed when the values given are not supported.
984984
985-
.. deprecated:: Unreleased
985+
.. deprecated:: 19.0
986986
This is no longer used.
987987
"""
988988

@@ -1033,12 +1033,12 @@ def open( # noqa: A001, PLR0913
10331033
If a callback is given then it will be called with the `AudioDevice` and a Numpy buffer of the data stream.
10341034
This callback will be run on a separate thread.
10351035
1036-
.. versionchanged:: Unreleased
1036+
.. versionchanged:: 19.0
10371037
SDL3 returns audio devices differently, exact formatting is set with :any:`AudioDevice.new_stream` instead.
10381038
10391039
`samples` and `allowed_changes` are ignored.
10401040
1041-
.. deprecated:: Unreleased
1041+
.. deprecated:: 19.0
10421042
This is an outdated method.
10431043
Use :any:`AudioDevice.open` instead, for example:
10441044
``tcod.sdl.audio.get_default_playback().open()``

tcod/sdl/mouse.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def set_relative_mode(enable: bool) -> None:
183183
:any:`tcod.sdl.mouse.capture`
184184
https://wiki.libsdl.org/SDL_SetWindowRelativeMouseMode
185185
186-
.. deprecated:: Unreleased
186+
.. deprecated:: 19.0
187187
Replaced with :any:`tcod.sdl.video.Window.relative_mouse_mode`
188188
"""
189189
_check(lib.SDL_SetWindowRelativeMouseMode(lib.SDL_GetMouseFocus(), enable))
@@ -193,7 +193,7 @@ def set_relative_mode(enable: bool) -> None:
193193
def get_relative_mode() -> bool:
194194
"""Return True if relative mouse mode is enabled.
195195
196-
.. deprecated:: Unreleased
196+
.. deprecated:: 19.0
197197
Replaced with :any:`tcod.sdl.video.Window.relative_mouse_mode`
198198
"""
199199
return bool(lib.SDL_GetWindowRelativeMouseMode(lib.SDL_GetMouseFocus()))

tcod/sdl/render.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class LogicalPresentation(enum.IntEnum):
4848
4949
See https://wiki.libsdl.org/SDL3/SDL_RendererLogicalPresentation
5050
51-
.. versionadded:: Unreleased
51+
.. versionadded:: 19.0
5252
"""
5353

5454
DISABLED = 0
@@ -439,7 +439,7 @@ def set_logical_presentation(self, resolution: tuple[int, int], mode: LogicalPre
439439
.. seealso::
440440
https://wiki.libsdl.org/SDL3/SDL_SetRenderLogicalPresentation
441441
442-
.. versionadded:: Unreleased
442+
.. versionadded:: 19.0
443443
"""
444444
width, height = resolution
445445
_check(lib.SDL_SetRenderLogicalPresentation(self.p, width, height, mode))
@@ -455,7 +455,7 @@ def logical_size(self) -> tuple[int, int]:
455455
456456
.. versionadded:: 13.5
457457
458-
.. versionchanged:: Unreleased
458+
.. versionchanged:: 19.0
459459
Setter is deprecated, use :any:`set_logical_presentation` instead.
460460
"""
461461
out = ffi.new("int[2]")
@@ -537,7 +537,7 @@ def read_pixels(
537537
538538
.. versionadded:: 15.0
539539
540-
.. versionchanged:: Unreleased
540+
.. versionchanged:: 19.0
541541
`format` no longer accepts `int` values.
542542
"""
543543
surface = _check_p(
@@ -681,7 +681,7 @@ def geometry(
681681
682682
.. versionadded:: 13.5
683683
684-
.. versionchanged:: Unreleased
684+
.. versionchanged:: 19.0
685685
`color` now takes float values instead of 8-bit integers.
686686
"""
687687
xy = np.ascontiguousarray(xy, np.float32)
@@ -741,7 +741,7 @@ def new_renderer(
741741
.. seealso::
742742
:func:`tcod.sdl.video.new_window`
743743
744-
.. versionchanged:: Unreleased
744+
.. versionchanged:: 19.0
745745
Removed `software` and `target_textures` parameters.
746746
`vsync` now takes an integer.
747747
`driver` now take a string.

tcod/sdl/video.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ def opacity(self, value: float) -> None:
276276
def grab(self) -> bool:
277277
"""Get or set this windows input grab mode.
278278
279-
.. deprecated:: Unreleased
279+
.. deprecated:: 19.0
280280
This attribute as been split into :any:`mouse_grab` and :any:`keyboard_grab`.
281281
"""
282282
return self.mouse_grab
@@ -289,7 +289,7 @@ def grab(self, value: bool) -> None:
289289
def mouse_grab(self) -> bool:
290290
"""Get or set this windows mouse input grab mode.
291291
292-
.. versionadded:: Unreleased
292+
.. versionadded:: 19.0
293293
"""
294294
return bool(lib.SDL_GetWindowMouseGrab(self.p))
295295

@@ -303,7 +303,7 @@ def keyboard_grab(self) -> bool:
303303
304304
https://wiki.libsdl.org/SDL3/SDL_SetWindowKeyboardGrab
305305
306-
.. versionadded:: Unreleased
306+
.. versionadded:: 19.0
307307
"""
308308
return bool(lib.SDL_GetWindowKeyboardGrab(self.p))
309309

0 commit comments

Comments
 (0)