libdatachannel-py 2025.1.0.dev15__tar.gz → 2025.1.0.dev17__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.
Files changed (42) hide show
  1. {libdatachannel_py-2025.1.0.dev15/src/libdatachannel_py.egg-info → libdatachannel_py-2025.1.0.dev17}/PKG-INFO +1 -1
  2. libdatachannel_py-2025.1.0.dev17/VERSION +1 -0
  3. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/pypath.py +1 -3
  4. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/pyproject.toml +8 -13
  5. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/src/libdatachannel/codec/__init__.pyi +20 -19
  6. libdatachannel_py-2025.1.0.dev15/src/libdatachannel/libdatachannel_ext.cpython-313-darwin.so → libdatachannel_py-2025.1.0.dev17/src/libdatachannel/libdatachannel_ext.cpython-314-darwin.so +0 -0
  7. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/src/libdatachannel/libyuv/__init__.pyi +8 -8
  8. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17/src/libdatachannel_py.egg-info}/PKG-INFO +1 -1
  9. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/src/libdatachannel_py.egg-info/SOURCES.txt +1 -1
  10. libdatachannel_py-2025.1.0.dev15/VERSION +0 -1
  11. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/LICENSE +0 -0
  12. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/MANIFEST.in +0 -0
  13. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/README.md +0 -0
  14. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/buildbase.py +0 -0
  15. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/run.py +0 -0
  16. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/setup.cfg +0 -0
  17. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/setup.py +0 -0
  18. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/src/libdatachannel/__init__.py +0 -0
  19. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/src/libdatachannel/codec/__init__.py +0 -0
  20. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/src/libdatachannel/libdatachannel_ext.pyi +0 -0
  21. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/src/libdatachannel/libyuv/__init__.py +0 -0
  22. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/src/libdatachannel/py.typed +0 -0
  23. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/src/libdatachannel_py.egg-info/dependency_links.txt +0 -0
  24. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/src/libdatachannel_py.egg-info/top_level.txt +0 -0
  25. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_audio_codec.py +0 -0
  26. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_candidate.py +0 -0
  27. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_configuration.py +0 -0
  28. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_description.py +0 -0
  29. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_frameinfo.py +0 -0
  30. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_h265nalunit.py +0 -0
  31. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_libyuv.py +0 -0
  32. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_mediahandler.py +0 -0
  33. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_message.py +0 -0
  34. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_nalunit.py +0 -0
  35. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_packetizationconfig.py +0 -0
  36. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_peerconnection.py +0 -0
  37. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_prop_audio_codec.py +0 -0
  38. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_reliability.py +0 -0
  39. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_rtppacketizer.py +0 -0
  40. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_video_codec.py +0 -0
  41. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_websocket.py +0 -0
  42. {libdatachannel_py-2025.1.0.dev15 → libdatachannel_py-2025.1.0.dev17}/tests/test_websocketserver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: libdatachannel-py
3
- Version: 2025.1.0.dev15
3
+ Version: 2025.1.0.dev17
4
4
  Summary: libdatachannel-py is a Python binding for libdatachannel.
5
5
  Home-page: https://github.com/shiguredo/libdatachannel-py
6
6
  License-Expression: Apache-2.0
@@ -0,0 +1 @@
1
+ 2025.1.0.dev17
@@ -7,8 +7,6 @@ import sys
7
7
  import sysconfig
8
8
  from pathlib import Path
9
9
 
10
- import distutils.sysconfig as du_sysconfig
11
-
12
10
 
13
11
  def get_python_version() -> str:
14
12
  """Get version associated with the current python interpreter.
@@ -223,7 +221,7 @@ def _guess_python_library(python_version: str):
223
221
  # returns an empty string on Linux, `du_sysconfig` is only used to
224
222
  # get the value of `LIBDIR`.
225
223
  candidate_libdirs = []
226
- libdir_a = du_sysconfig.get_config_var("LIBDIR")
224
+ libdir_a = sysconfig.get_config_var("LIBDIR")
227
225
  assert not isinstance(libdir_a, int)
228
226
  if libdir_a is None:
229
227
  libdest = sysconfig.get_config_var("LIBDEST")
@@ -12,27 +12,22 @@ classifiers = [
12
12
  "Programming Language :: Python :: 3.13",
13
13
  ]
14
14
  requires-python = ">=3.13"
15
+
15
16
  [project.urls]
16
17
  Source = "https://github.com/shiguredo/libdatachannel-py"
17
18
  Discord = "https://discord.gg/shiguredo"
18
19
 
19
20
  [build-system]
20
- requires = ["setuptools>=80.9", "wheel>=0.45.1"]
21
+ requires = ["setuptools>=80.9", "wheel==0.45.1"]
21
22
  build-backend = "setuptools.build_meta"
22
23
 
23
24
  [dependency-groups]
24
- dev = [
25
- "nanobind>=2.8",
26
- "pytest",
27
- "setuptools>=80.9",
28
- "build>=1.3.0",
29
- "wheel>=0.45.1",
30
- "numpy>=2.3",
31
- "ty",
32
- "hypothesis",
33
- "aiohttp",
34
- "pytest-aiohttp",
35
- ]
25
+ dev = ["nanobind==2.9.2"]
26
+ test = ["pytest", "pytest-aiohttp", "numpy", "hypothesis", "aiohttp"]
27
+ lint = ["ruff", "ty"]
28
+
29
+ [tool.uv]
30
+ default-groups = ["dev", "test", "lint"]
36
31
 
37
32
  [tool.uv.workspace]
38
33
  members = ["examples"]
@@ -3,7 +3,8 @@ import datetime
3
3
  import enum
4
4
  from typing import Annotated
5
5
 
6
- from numpy.typing import ArrayLike
6
+ import numpy
7
+ from numpy.typing import NDArray
7
8
 
8
9
 
9
10
  class VideoCodecType(enum.Enum):
@@ -29,22 +30,22 @@ class VideoFrameBufferI420:
29
30
  def create(arg0: int, arg1: int, /) -> VideoFrameBufferI420: ...
30
31
 
31
32
  @property
32
- def y(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
33
+ def y(self) -> Annotated[NDArray[numpy.uint8], dict(shape=(None, None), order='C')]: ...
33
34
 
34
35
  @y.setter
35
- def y(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
36
+ def y(self, arg: Annotated[NDArray[numpy.uint8], dict(shape=(None, None), order='C')], /) -> None: ...
36
37
 
37
38
  @property
38
- def u(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
39
+ def u(self) -> Annotated[NDArray[numpy.uint8], dict(shape=(None, None), order='C')]: ...
39
40
 
40
41
  @u.setter
41
- def u(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
42
+ def u(self, arg: Annotated[NDArray[numpy.uint8], dict(shape=(None, None), order='C')], /) -> None: ...
42
43
 
43
44
  @property
44
- def v(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
45
+ def v(self) -> Annotated[NDArray[numpy.uint8], dict(shape=(None, None), order='C')]: ...
45
46
 
46
47
  @v.setter
47
- def v(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
48
+ def v(self, arg: Annotated[NDArray[numpy.uint8], dict(shape=(None, None), order='C')], /) -> None: ...
48
49
 
49
50
  def width(self) -> int: ...
50
51
 
@@ -61,16 +62,16 @@ class VideoFrameBufferNV12:
61
62
  def create(arg0: int, arg1: int, /) -> VideoFrameBufferNV12: ...
62
63
 
63
64
  @property
64
- def y(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
65
+ def y(self) -> Annotated[NDArray[numpy.uint8], dict(shape=(None, None), order='C')]: ...
65
66
 
66
67
  @y.setter
67
- def y(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
68
+ def y(self, arg: Annotated[NDArray[numpy.uint8], dict(shape=(None, None), order='C')], /) -> None: ...
68
69
 
69
70
  @property
70
- def uv(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')]: ...
71
+ def uv(self) -> Annotated[NDArray[numpy.uint8], dict(shape=(None, None), order='C')]: ...
71
72
 
72
73
  @uv.setter
73
- def uv(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None), order='C')], /) -> None: ...
74
+ def uv(self, arg: Annotated[NDArray[numpy.uint8], dict(shape=(None, None), order='C')], /) -> None: ...
74
75
 
75
76
  def width(self) -> int: ...
76
77
 
@@ -85,10 +86,10 @@ class VideoFrameBufferBGR888:
85
86
  def create(arg0: int, arg1: int, /) -> VideoFrameBufferBGR888: ...
86
87
 
87
88
  @property
88
- def bgr(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None, 3), order='C')]: ...
89
+ def bgr(self) -> Annotated[NDArray[numpy.uint8], dict(shape=(None, None, 3), order='C')]: ...
89
90
 
90
91
  @bgr.setter
91
- def bgr(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None, None, 3), order='C')], /) -> None: ...
92
+ def bgr(self, arg: Annotated[NDArray[numpy.uint8], dict(shape=(None, None, 3), order='C')], /) -> None: ...
92
93
 
93
94
  def width(self) -> int: ...
94
95
 
@@ -161,10 +162,10 @@ class EncodedImage:
161
162
  def __init__(self) -> None: ...
162
163
 
163
164
  @property
164
- def data(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None), order='C')]: ...
165
+ def data(self) -> Annotated[NDArray[numpy.uint8], dict(shape=(None,), order='C')]: ...
165
166
 
166
167
  @data.setter
167
- def data(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None), order='C')], /) -> None: ...
168
+ def data(self, arg: Annotated[NDArray[numpy.uint8], dict(shape=(None,), order='C')], /) -> None: ...
168
169
 
169
170
  @property
170
171
  def timestamp(self) -> datetime.timedelta: ...
@@ -263,10 +264,10 @@ class AudioFrame:
263
264
  def sample_rate(self, arg: int, /) -> None: ...
264
265
 
265
266
  @property
266
- def pcm(self) -> Annotated[ArrayLike, dict(dtype='float32', shape=(None, None), order='C')]: ...
267
+ def pcm(self) -> Annotated[NDArray[numpy.float32], dict(shape=(None, None), order='C')]: ...
267
268
 
268
269
  @pcm.setter
269
- def pcm(self, arg: Annotated[ArrayLike, dict(dtype='float32', shape=(None, None), order='C')], /) -> None: ...
270
+ def pcm(self, arg: Annotated[NDArray[numpy.float32], dict(shape=(None, None), order='C')], /) -> None: ...
270
271
 
271
272
  @property
272
273
  def timestamp(self) -> datetime.timedelta: ...
@@ -282,10 +283,10 @@ class EncodedAudio:
282
283
  def __init__(self) -> None: ...
283
284
 
284
285
  @property
285
- def data(self) -> Annotated[ArrayLike, dict(dtype='uint8', shape=(None), order='C')]: ...
286
+ def data(self) -> Annotated[NDArray[numpy.uint8], dict(shape=(None,), order='C')]: ...
286
287
 
287
288
  @data.setter
288
- def data(self, arg: Annotated[ArrayLike, dict(dtype='uint8', shape=(None), order='C')], /) -> None: ...
289
+ def data(self, arg: Annotated[NDArray[numpy.uint8], dict(shape=(None,), order='C')], /) -> None: ...
289
290
 
290
291
  @property
291
292
  def timestamp(self) -> datetime.timedelta: ...
@@ -1,6 +1,6 @@
1
1
  import enum
2
2
 
3
- from numpy.typing import ArrayLike
3
+ from numpy.typing import NDArray
4
4
 
5
5
 
6
6
  class FilterMode(enum.Enum):
@@ -172,16 +172,16 @@ class RotationMode(enum.Enum):
172
172
 
173
173
  kRotate270 = 270
174
174
 
175
- def nv12_scale(src_y: ArrayLike, src_uv: ArrayLike, src_stride_y: int, src_stride_uv: int, src_width: int, src_height: int, dst_y: ArrayLike, dst_uv: ArrayLike, dst_stride_y: int, dst_stride_uv: int, dst_width: int, dst_height: int, filtering: FilterMode) -> int: ...
175
+ def nv12_scale(src_y: NDArray, src_uv: NDArray, src_stride_y: int, src_stride_uv: int, src_width: int, src_height: int, dst_y: NDArray, dst_uv: NDArray, dst_stride_y: int, dst_stride_uv: int, dst_width: int, dst_height: int, filtering: FilterMode) -> int: ...
176
176
 
177
- def i420_scale(src_y: ArrayLike, src_u: ArrayLike, src_v: ArrayLike, src_stride_y: int, src_stride_u: int, src_stride_v: int, src_width: int, src_height: int, dst_y: ArrayLike, dst_u: ArrayLike, dst_v: ArrayLike, dst_stride_y: int, dst_stride_u: int, dst_stride_v: int, dst_width: int, dst_height: int, filtering: FilterMode) -> int: ...
177
+ def i420_scale(src_y: NDArray, src_u: NDArray, src_v: NDArray, src_stride_y: int, src_stride_u: int, src_stride_v: int, src_width: int, src_height: int, dst_y: NDArray, dst_u: NDArray, dst_v: NDArray, dst_stride_y: int, dst_stride_u: int, dst_stride_v: int, dst_width: int, dst_height: int, filtering: FilterMode) -> int: ...
178
178
 
179
- def convert_to_i420(sample: ArrayLike, sample_size: int, dst_y: ArrayLike, dst_stride_y: int, dst_u: ArrayLike, dst_stride_u: int, dst_v: ArrayLike, dst_stride_v: int, crop_x: int, crop_y: int, src_width: int, src_height: int, crop_width: int, crop_height: int, rotation: RotationMode, fourcc: FourCC) -> int: ...
179
+ def convert_to_i420(sample: NDArray, sample_size: int, dst_y: NDArray, dst_stride_y: int, dst_u: NDArray, dst_stride_u: int, dst_v: NDArray, dst_stride_v: int, crop_x: int, crop_y: int, src_width: int, src_height: int, crop_width: int, crop_height: int, rotation: RotationMode, fourcc: FourCC) -> int: ...
180
180
 
181
- def nv12_to_i420(src_y: ArrayLike, src_uv: ArrayLike, src_stride_y: int, src_stride_uv: int, dst_y: ArrayLike, dst_u: ArrayLike, dst_v: ArrayLike, dst_stride_y: int, dst_stride_u: int, dst_stride_v: int, width: int, height: int) -> int: ...
181
+ def nv12_to_i420(src_y: NDArray, src_uv: NDArray, src_stride_y: int, src_stride_uv: int, dst_y: NDArray, dst_u: NDArray, dst_v: NDArray, dst_stride_y: int, dst_stride_u: int, dst_stride_v: int, width: int, height: int) -> int: ...
182
182
 
183
- def i420_to_nv12(src_y: ArrayLike, src_u: ArrayLike, src_v: ArrayLike, src_stride_y: int, src_stride_u: int, src_stride_v: int, dst_y: ArrayLike, dst_uv: ArrayLike, dst_stride_y: int, dst_stride_uv: int, width: int, height: int) -> int: ...
183
+ def i420_to_nv12(src_y: NDArray, src_u: NDArray, src_v: NDArray, src_stride_y: int, src_stride_u: int, src_stride_v: int, dst_y: NDArray, dst_uv: NDArray, dst_stride_y: int, dst_stride_uv: int, width: int, height: int) -> int: ...
184
184
 
185
- def rgb24_to_i420(src_rgb24: ArrayLike, src_stride_rgb24: int, dst_y: ArrayLike, dst_u: ArrayLike, dst_v: ArrayLike, dst_stride_y: int, dst_stride_u: int, dst_stride_v: int, width: int, height: int) -> int: ...
185
+ def rgb24_to_i420(src_rgb24: NDArray, src_stride_rgb24: int, dst_y: NDArray, dst_u: NDArray, dst_v: NDArray, dst_stride_y: int, dst_stride_u: int, dst_stride_v: int, width: int, height: int) -> int: ...
186
186
 
187
- def i420_to_rgb24(src_y: ArrayLike, src_u: ArrayLike, src_v: ArrayLike, src_stride_y: int, src_stride_u: int, src_stride_v: int, dst_rgb24: ArrayLike, dst_stride_rgb24: int, width: int, height: int) -> int: ...
187
+ def i420_to_rgb24(src_y: NDArray, src_u: NDArray, src_v: NDArray, src_stride_y: int, src_stride_u: int, src_stride_v: int, dst_rgb24: NDArray, dst_stride_rgb24: int, width: int, height: int) -> int: ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: libdatachannel-py
3
- Version: 2025.1.0.dev15
3
+ Version: 2025.1.0.dev17
4
4
  Summary: libdatachannel-py is a Python binding for libdatachannel.
5
5
  Home-page: https://github.com/shiguredo/libdatachannel-py
6
6
  License-Expression: Apache-2.0
@@ -8,7 +8,7 @@ pyproject.toml
8
8
  run.py
9
9
  setup.py
10
10
  src/libdatachannel/__init__.py
11
- src/libdatachannel/libdatachannel_ext.cpython-313-darwin.so
11
+ src/libdatachannel/libdatachannel_ext.cpython-314-darwin.so
12
12
  src/libdatachannel/libdatachannel_ext.pyi
13
13
  src/libdatachannel/py.typed
14
14
  src/libdatachannel/codec/__init__.py
@@ -1 +0,0 @@
1
- 2025.1.0.dev15