sora-sdk 2025.1.0.dev14__tar.gz → 2025.1.0.dev16__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.

Potentially problematic release.


This version of sora-sdk might be problematic. Click here for more details.

Files changed (46) hide show
  1. {sora_sdk-2025.1.0.dev14/src/sora_sdk.egg-info → sora_sdk-2025.1.0.dev16}/PKG-INFO +1 -1
  2. sora_sdk-2025.1.0.dev16/pyproject.toml +50 -0
  3. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so +0 -0
  4. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/src/sora_sdk/sora_sdk_ext.pyi +2 -0
  5. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16/src/sora_sdk.egg-info}/PKG-INFO +1 -1
  6. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/src/sora_sdk.egg-info/SOURCES.txt +0 -1
  7. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_openh264.py +73 -0
  8. sora_sdk-2025.1.0.dev14/pyproject.toml +0 -79
  9. sora_sdk-2025.1.0.dev14/tests/test_codec_preference.py +0 -124
  10. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/LICENSE +0 -0
  11. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/MANIFEST.in +0 -0
  12. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/NOTICE.md +0 -0
  13. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/README.md +0 -0
  14. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/buildbase.py +0 -0
  15. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/pypath.py +0 -0
  16. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/run.py +0 -0
  17. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/setup.cfg +0 -0
  18. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/setup.py +0 -0
  19. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/src/sora_sdk/__init__.py +0 -0
  20. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/src/sora_sdk/py.typed +0 -0
  21. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/src/sora_sdk.egg-info/dependency_links.txt +0 -0
  22. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/src/sora_sdk.egg-info/top_level.txt +0 -0
  23. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_amd_amf.py +0 -0
  24. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_apple_video_toolbox.py +0 -0
  25. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_authz.py +0 -0
  26. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_authz_simulcast.py +0 -0
  27. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_ca_cert.py +0 -0
  28. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_capability.py +0 -0
  29. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_degradation_preference.py +0 -0
  30. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_encoded_transform.py +0 -0
  31. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_intel_vpl.py +0 -0
  32. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_memory_leak.py +0 -0
  33. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_messaging.py +0 -0
  34. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_messaging_header.py +0 -0
  35. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_nvidia_video_codec_sdk.py +0 -0
  36. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_opus.py +0 -0
  37. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_re_offer_re_answer_sdp.py +0 -0
  38. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_sendonly_recvonly.py +0 -0
  39. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_signaling.py +0 -0
  40. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_signaling_message.py +0 -0
  41. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_signaling_notify.py +0 -0
  42. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_simulcast.py +0 -0
  43. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_sora_disconnect.py +0 -0
  44. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_type_disconnect.py +0 -0
  45. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_type_switched.py +0 -0
  46. {sora_sdk-2025.1.0.dev14 → sora_sdk-2025.1.0.dev16}/tests/test_vad.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sora_sdk
3
- Version: 2025.1.0.dev14
3
+ Version: 2025.1.0.dev16
4
4
  Summary: WebRTC SFU Sora Python SDK
5
5
  Home-page: https://github.com/shiguredo/sora-python-sdk
6
6
  Author-email: "Shiguredo Inc." <contact+pypi@shiguredo.jp>
@@ -0,0 +1,50 @@
1
+ [project]
2
+ name = "sora_sdk"
3
+ authors = [{ name = "Shiguredo Inc.", email = "contact+pypi@shiguredo.jp" }]
4
+ version = "2025.1.0.dev16"
5
+ description = "WebRTC SFU Sora Python SDK"
6
+ readme = "README.md"
7
+ license = { file = "LICENSE" }
8
+ classifiers = [
9
+ "License :: OSI Approved :: Apache Software License",
10
+ "Programming Language :: Python :: 3 :: Only",
11
+ "Programming Language :: Python :: 3.11",
12
+ "Programming Language :: Python :: 3.12",
13
+ "Programming Language :: Python :: 3.13",
14
+ ]
15
+ requires-python = ">= 3.10"
16
+
17
+ [project.urls]
18
+ Source = "https://github.com/shiguredo/sora-python-sdk"
19
+ Documentation = "https://sora-python-sdk.shiguredo.jp"
20
+ Discord = "https://discord.gg/shiguredo"
21
+
22
+ [build-system]
23
+ requires = ["setuptools~=76.0", "wheel~=0.45.1"]
24
+ build-backend = "setuptools.build_meta"
25
+
26
+ [tool.uv]
27
+ python-preference = "only-managed"
28
+ dev-dependencies = [
29
+ "nanobind~=2.5.0",
30
+ "setuptools~=76.0",
31
+ "build~=1.2.2.post1",
32
+ "wheel~=0.45.1",
33
+ "typing-extensions",
34
+ "python-dotenv",
35
+ "numpy",
36
+ "httpx",
37
+ "pytest",
38
+ "ruff",
39
+ "mypy",
40
+ "pyjwt",
41
+ "pytest-repeat",
42
+ ]
43
+
44
+ [tool.ruff]
45
+ target-version = "py310"
46
+ line-length = 100
47
+
48
+
49
+ [tool.pytest.ini_options]
50
+ xfail_strict = true
@@ -488,3 +488,5 @@ def create_video_codec_preference_from_implementation(arg0: SoraVideoCodecCapabi
488
488
  def enable_libwebrtc_log(arg: SoraLoggingSeverity, /) -> None: ...
489
489
 
490
490
  def get_video_codec_capability(openh264: str | None = None) -> SoraVideoCodecCapability: ...
491
+
492
+ def rtc_log(arg0: SoraLoggingSeverity, arg1: str, /) -> None: ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sora_sdk
3
- Version: 2025.1.0.dev14
3
+ Version: 2025.1.0.dev16
4
4
  Summary: WebRTC SFU Sora Python SDK
5
5
  Home-page: https://github.com/shiguredo/sora-python-sdk
6
6
  Author-email: "Shiguredo Inc." <contact+pypi@shiguredo.jp>
@@ -21,7 +21,6 @@ tests/test_authz.py
21
21
  tests/test_authz_simulcast.py
22
22
  tests/test_ca_cert.py
23
23
  tests/test_capability.py
24
- tests/test_codec_preference.py
25
24
  tests/test_degradation_preference.py
26
25
  tests/test_encoded_transform.py
27
26
  tests/test_intel_vpl.py
@@ -6,12 +6,85 @@ import pytest
6
6
  from client import SoraClient, SoraRole
7
7
 
8
8
  from sora_sdk import (
9
+ Sora,
9
10
  SoraVideoCodecImplementation,
10
11
  SoraVideoCodecPreference,
11
12
  SoraVideoCodecType,
13
+ get_video_codec_capability,
12
14
  )
13
15
 
14
16
 
17
+ def test_openh264_get_codec_capability(setup):
18
+ openh264_path = setup.get("openh264_path")
19
+ capability = get_video_codec_capability(openh264_path)
20
+
21
+ cisco_openh264_available = False
22
+
23
+ for e in capability.engines:
24
+ if e.name == SoraVideoCodecImplementation.CISCO_OPENH264:
25
+ cisco_openh264_available = True
26
+ assert cisco_openh264_available is True
27
+
28
+ codecs = []
29
+ for e in capability.engines:
30
+ # macOS では INTERNAL の Video Toolbox が利用されるので OpenH264 は採用しないようにする
31
+ if sys.platform == "darwin":
32
+ if e.name == SoraVideoCodecImplementation.CISCO_OPENH264:
33
+ continue
34
+
35
+ for c in e.codecs:
36
+ if c.decoder or c.encoder:
37
+ # encoder/decoder どちらかが true であれば採用する
38
+ if c.decoder or c.encoder:
39
+ codecs.append(
40
+ SoraVideoCodecPreference.Codec(
41
+ type=c.type,
42
+ decoder=e.name,
43
+ encoder=e.name,
44
+ )
45
+ )
46
+
47
+ # エラーにならないことを確認する
48
+ Sora(
49
+ video_codec_preference=SoraVideoCodecPreference(
50
+ codecs=codecs,
51
+ ),
52
+ openh264=openh264_path,
53
+ )
54
+
55
+
56
+ def test_openh264_video_codec_preference(setup):
57
+ openh264_path = setup.get("openh264_path")
58
+ Sora(
59
+ video_codec_preference=SoraVideoCodecPreference(
60
+ codecs=[
61
+ SoraVideoCodecPreference.Codec(
62
+ type=SoraVideoCodecType.VP8,
63
+ decoder=SoraVideoCodecImplementation.INTERNAL,
64
+ encoder=SoraVideoCodecImplementation.INTERNAL,
65
+ ),
66
+ SoraVideoCodecPreference.Codec(
67
+ type=SoraVideoCodecType.VP9,
68
+ decoder=SoraVideoCodecImplementation.INTERNAL,
69
+ encoder=SoraVideoCodecImplementation.INTERNAL,
70
+ ),
71
+ SoraVideoCodecPreference.Codec(
72
+ type=SoraVideoCodecType.AV1,
73
+ decoder=SoraVideoCodecImplementation.INTERNAL,
74
+ encoder=SoraVideoCodecImplementation.INTERNAL,
75
+ ),
76
+ # H.264 だけは OpenH264 を利用するようにする
77
+ SoraVideoCodecPreference.Codec(
78
+ type=SoraVideoCodecType.H264,
79
+ decoder=SoraVideoCodecImplementation.CISCO_OPENH264,
80
+ encoder=SoraVideoCodecImplementation.CISCO_OPENH264,
81
+ ),
82
+ ],
83
+ ),
84
+ openh264=openh264_path,
85
+ )
86
+
87
+
15
88
  def test_openh264_sendonly_recvonly(setup):
16
89
  signaling_urls = setup.get("signaling_urls")
17
90
  channel_id_prefix = setup.get("channel_id_prefix")
@@ -1,79 +0,0 @@
1
- [project]
2
- name = "sora_sdk"
3
- authors = [{ name = "Shiguredo Inc.", email = "contact+pypi@shiguredo.jp" }]
4
- version = "2025.1.0.dev14"
5
- description = "WebRTC SFU Sora Python SDK"
6
- readme = "README.md"
7
- license = { file = "LICENSE" }
8
- classifiers = [
9
- "License :: OSI Approved :: Apache Software License",
10
- "Programming Language :: Python :: 3 :: Only",
11
- "Programming Language :: Python :: 3.11",
12
- "Programming Language :: Python :: 3.12",
13
- "Programming Language :: Python :: 3.13",
14
- ]
15
- requires-python = ">= 3.10"
16
-
17
- [project.urls]
18
- Source = "https://github.com/shiguredo/sora-python-sdk"
19
- Documentation = "https://sora-python-sdk.shiguredo.jp"
20
- Discord = "https://discord.gg/shiguredo"
21
-
22
- # build-system 設定がなぜ必要なのか
23
- #
24
- # pip version 23 以前は、pip がデフォルトで設定する build-system.requires に setuptools, wheel が含まれていたので
25
- # 特になにもしなくても pip install でビルドできていたが、pip 24 以降はデフォルトから wheel が削除され、
26
- # setuptools のみがデフォルトの requires になった。この影響で wheel を build-system.requires で指定しないと
27
- # `ModuleNotFoundError: No module named 'wheel'` が発生するようになった。
28
- # 回避策として事前に wheel をインストールすれば良いと思うかもしれないが、pip などのビルドフロントエンドは
29
- # build-system.requires の下に列挙されているビルド時の依存関係 (と、その依存関係)だけをインストールする先としての一時的な仮想環境を作成
30
- # するため、事前にインストールした wheel はビルド時の依存関係として認識されない。
31
- #
32
- # この問題に対応するため build-system.requires に wheel と setuptools を指定し、
33
- # ソース成果物から pip install (今回だと pip install -e file:.) されるときに
34
- # 必要な依存関係が伝わるようにした。
35
- #
36
- # sora-python-sdk の setup.py は setuptools と wheel を必要としているので、requires の指定はこうなっている。
37
- # build-backend の指定方法は、setuptools のドキュメントに記載があったのでそのまま採用した。
38
- #
39
- # setuptools と wheel のバージョン指定について
40
- # dev-dependencies に指定している setuptools と wheel のバージョンに合わせているので
41
- # dev-dependencies に指定しているバージョンを変更した時は、build-system.requires に指定しているバージョンも変更した方が良い。
42
- #
43
- # 参考:
44
- # - https://packaging.python.org/ja/latest/
45
- # - Python パッケージを配布・インストールする方法について包括的に解説されていて参考になる
46
- # - https://packaging.python.org/ja/latest/guides/modernize-setup-py-project/
47
- # - setup.py を pyproject.toml と共存させる設定をしたいときに参考になる
48
- # - https://packaging.python.org/ja/latest/guides/modernize-setup-py-project/#what-is-the-build-isolation-feature
49
- # - なぜ、ビルド前に wheel をインストールしてもビルド時の依存関係として認識されないのかについて記載されていた
50
- # - https://setuptools.pypa.io/en/latest/build_meta.html
51
- # - setuptools の build-system サポートについて解説されていて参考になる
52
- [build-system]
53
- requires = ["setuptools~=75.7", "wheel~=0.45.1"]
54
- build-backend = "setuptools.build_meta"
55
-
56
- [tool.uv]
57
- python-preference = "only-managed"
58
- dev-dependencies = [
59
- "nanobind~=2.5.0",
60
- "setuptools~=75.7",
61
- "build~=1.2.2.post1",
62
- "wheel~=0.45.1",
63
- "typing-extensions",
64
- "python-dotenv",
65
- "numpy",
66
- "httpx",
67
- "pytest",
68
- "ruff",
69
- "mypy",
70
- "pyjwt",
71
- ]
72
-
73
- [tool.ruff]
74
- target-version = "py310"
75
- line-length = 100
76
-
77
-
78
- [tool.pytest.ini_options]
79
- xfail_strict = true
@@ -1,124 +0,0 @@
1
- import sys
2
-
3
- from sora_sdk import (
4
- Sora,
5
- SoraVideoCodecImplementation,
6
- SoraVideoCodecPreference,
7
- SoraVideoCodecType,
8
- get_video_codec_capability,
9
- )
10
-
11
-
12
- # このテストでは Linux では NVIDIA Video Codec SDK > Intel VPL > OpenH264 の順で優先される
13
- # このテストでは Windows では NVIDIA Video Codec SDK > Intel VPL の順で優先される
14
- # このテストでは macOS では Video Toolbox >OpenH264 の順で優先される
15
- def test_get_codec_capability(setup):
16
- openh264_path = setup.get("openh264_path")
17
- capability = get_video_codec_capability(openh264_path)
18
-
19
- intel_vpl_available = False
20
- cisco_openh264_available = False
21
- nvidia_video_codec_sdk_available = False
22
-
23
- for e in capability.engines:
24
- if e.name == SoraVideoCodecImplementation.INTEL_VPL:
25
- intel_vpl_available = True
26
- if e.name == SoraVideoCodecImplementation.CISCO_OPENH264:
27
- cisco_openh264_available = True
28
- if e.name == SoraVideoCodecImplementation.NVIDIA_VIDEO_CODEC_SDK:
29
- nvidia_video_codec_sdk_available = True
30
-
31
- match sys.platform:
32
- case "linux":
33
- assert openh264_path is not None
34
- assert cisco_openh264_available is True
35
- case "darwin":
36
- assert openh264_path is not None
37
- assert cisco_openh264_available is True
38
- case "win32":
39
- # SDK 的には Windows は非対応だが GitHub Actions の E2E テストの OpenH264 のパスは指定してある
40
- assert openh264_path is not None
41
- assert cisco_openh264_available is True
42
-
43
- codecs = []
44
- for e in capability.engines:
45
- if sys.platform == "linux":
46
- # Intel VPL があったら Open H.264 は採用しない
47
- if intel_vpl_available and e.name == SoraVideoCodecImplementation.CISCO_OPENH264:
48
- continue
49
-
50
- # NVIDIA Video Codec SDK があったら Intel VPL は採用しない
51
- if (
52
- nvidia_video_codec_sdk_available
53
- and e.name == SoraVideoCodecImplementation.INTEL_VPL
54
- ):
55
- continue
56
-
57
- # NVIDIA Video Codec SDK があったら OpenH264 は採用しない
58
- if (
59
- nvidia_video_codec_sdk_available
60
- and e.name == SoraVideoCodecImplementation.CISCO_OPENH264
61
- ):
62
- continue
63
-
64
- # macOS では INTERNAL の Video Toolbox が利用されるので OpenH264 は採用しないようにする
65
- if sys.platform == "darwin":
66
- if e.name == SoraVideoCodecImplementation.CISCO_OPENH264:
67
- continue
68
-
69
- for c in e.codecs:
70
- if c.decoder or c.encoder:
71
- # encoder/decoder どちらかが true であれば採用する
72
- if c.decoder or c.encoder:
73
- codecs.append(
74
- SoraVideoCodecPreference.Codec(
75
- type=c.type,
76
- decoder=e.name,
77
- encoder=e.name,
78
- )
79
- )
80
-
81
- # print(e.parameters.nvcodec_gpu_device_name)
82
- # print(e.parameters.openh264_path)
83
- # print(e.parameters.version)
84
- # print(e.parameters.vpl_impl)
85
- # print(e.parameters.vpl_impl_value)
86
-
87
- Sora(
88
- video_codec_preference=SoraVideoCodecPreference(
89
- codecs=codecs,
90
- ),
91
- openh264=openh264_path,
92
- )
93
-
94
-
95
- def test_video_codec_preference(setup):
96
- openh264_path = setup.get("openh264_path")
97
- Sora(
98
- video_codec_preference=SoraVideoCodecPreference(
99
- codecs=[
100
- SoraVideoCodecPreference.Codec(
101
- type=SoraVideoCodecType.VP8,
102
- decoder=SoraVideoCodecImplementation.INTERNAL,
103
- encoder=SoraVideoCodecImplementation.INTERNAL,
104
- ),
105
- SoraVideoCodecPreference.Codec(
106
- type=SoraVideoCodecType.VP9,
107
- decoder=SoraVideoCodecImplementation.INTERNAL,
108
- encoder=SoraVideoCodecImplementation.INTERNAL,
109
- ),
110
- SoraVideoCodecPreference.Codec(
111
- type=SoraVideoCodecType.AV1,
112
- decoder=SoraVideoCodecImplementation.INTERNAL,
113
- encoder=SoraVideoCodecImplementation.INTERNAL,
114
- ),
115
- # H.264 だけは OpenH264 を利用するようにする
116
- SoraVideoCodecPreference.Codec(
117
- type=SoraVideoCodecType.H264,
118
- decoder=SoraVideoCodecImplementation.CISCO_OPENH264,
119
- encoder=SoraVideoCodecImplementation.CISCO_OPENH264,
120
- ),
121
- ],
122
- ),
123
- openh264=openh264_path,
124
- )