sora-sdk 2024.4.0.dev11__tar.gz → 2024.4.0.dev14__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 (29) hide show
  1. {sora_sdk-2024.4.0.dev11/src/sora_sdk.egg-info → sora_sdk-2024.4.0.dev14}/PKG-INFO +2 -1
  2. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/pyproject.toml +3 -2
  3. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/src/sora_sdk/sora_sdk_ext.cpython-310-darwin.so +0 -0
  4. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14/src/sora_sdk.egg-info}/PKG-INFO +2 -1
  5. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/tests/test_macos.py +62 -0
  6. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/tests/test_simulcast.py +1 -0
  7. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/LICENSE +0 -0
  8. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/MANIFEST.in +0 -0
  9. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/NOTICE.md +0 -0
  10. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/README.md +0 -0
  11. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/buildbase.py +0 -0
  12. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/pypath.py +0 -0
  13. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/run.py +0 -0
  14. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/setup.cfg +0 -0
  15. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/setup.py +0 -0
  16. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/src/sora_sdk/__init__.py +0 -0
  17. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/src/sora_sdk/py.typed +0 -0
  18. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/src/sora_sdk/sora_sdk_ext.pyi +0 -0
  19. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/src/sora_sdk.egg-info/SOURCES.txt +0 -0
  20. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/src/sora_sdk.egg-info/dependency_links.txt +0 -0
  21. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/src/sora_sdk.egg-info/top_level.txt +0 -0
  22. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/tests/test_ca_cert.py +0 -0
  23. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/tests/test_messaging.py +0 -0
  24. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/tests/test_openh264.py +0 -0
  25. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/tests/test_re_offer_re_answer_sdp.py +0 -0
  26. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/tests/test_sendonly_recvonly.py +0 -0
  27. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/tests/test_signaling_message.py +0 -0
  28. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/tests/test_sora_disconnect.py +0 -0
  29. {sora_sdk-2024.4.0.dev11 → sora_sdk-2024.4.0.dev14}/tests/test_vad.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sora_sdk
3
- Version: 2024.4.0.dev11
3
+ Version: 2024.4.0.dev14
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>
@@ -190,6 +190,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
190
190
  Classifier: Programming Language :: Python :: 3.10
191
191
  Classifier: Programming Language :: Python :: 3.11
192
192
  Classifier: Programming Language :: Python :: 3.12
193
+ Classifier: Programming Language :: Python :: 3.13
193
194
  Requires-Python: >=3.10
194
195
  Description-Content-Type: text/markdown
195
196
  License-File: LICENSE
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "sora_sdk"
3
3
  authors = [{ name = "Shiguredo Inc.", email = "contact+pypi@shiguredo.jp" }]
4
- version = "2024.4.0.dev11"
4
+ version = "2024.4.0.dev14"
5
5
  description = "WebRTC SFU Sora Python SDK"
6
6
  readme = "README.md"
7
7
  license = { file = "LICENSE" }
@@ -11,6 +11,7 @@ classifiers = [
11
11
  "Programming Language :: Python :: 3.10",
12
12
  "Programming Language :: Python :: 3.11",
13
13
  "Programming Language :: Python :: 3.12",
14
+ "Programming Language :: Python :: 3.13",
14
15
  ]
15
16
  requires-python = ">= 3.10"
16
17
 
@@ -56,7 +57,7 @@ build-backend = "setuptools.build_meta"
56
57
  [tool.uv]
57
58
  python-preference = "only-managed"
58
59
  dev-dependencies = [
59
- "nanobind~=2.1.0",
60
+ "nanobind~=2.2.0",
60
61
  "setuptools>=75.0",
61
62
  "build~=1.2.2",
62
63
  "wheel~=0.44.0",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sora_sdk
3
- Version: 2024.4.0.dev11
3
+ Version: 2024.4.0.dev14
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>
@@ -190,6 +190,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
190
190
  Classifier: Programming Language :: Python :: 3.10
191
191
  Classifier: Programming Language :: Python :: 3.11
192
192
  Classifier: Programming Language :: Python :: 3.12
193
+ Classifier: Programming Language :: Python :: 3.13
193
194
  Requires-Python: >=3.10
194
195
  Description-Content-Type: text/markdown
195
196
  License-File: LICENSE
@@ -58,6 +58,68 @@ def test_macos_video_hwa_sendonly(setup, video_codec_type):
58
58
  assert outbound_rtp_stats["packetsSent"] > 0
59
59
 
60
60
 
61
+ @pytest.mark.skipif(sys.platform != "darwin", reason="macOS でのみ実行する")
62
+ @pytest.mark.parametrize(
63
+ ("video_codec_type", "expected_implementation"),
64
+ [
65
+ ("H264", "SimulcastEncoderAdapter (VideoToolbox, VideoToolbox, VideoToolbox)"),
66
+ ("H265", "SimulcastEncoderAdapter (VideoToolbox, VideoToolbox, VideoToolbox)"),
67
+ ],
68
+ )
69
+ def test_macos_simulcast(setup, video_codec_type, expected_implementation):
70
+ signaling_urls = setup.get("signaling_urls")
71
+ channel_id_prefix = setup.get("channel_id_prefix")
72
+ metadata = setup.get("metadata")
73
+
74
+ channel_id = f"{channel_id_prefix}_{__name__}_{sys._getframe().f_code.co_name}_{uuid.uuid4()}"
75
+
76
+ sendonly = SoraClient(
77
+ signaling_urls,
78
+ SoraRole.SENDONLY,
79
+ channel_id,
80
+ simulcast=True,
81
+ audio=False,
82
+ video=True,
83
+ video_codec_type=video_codec_type,
84
+ video_bit_rate=3000,
85
+ metadata=metadata,
86
+ video_width=1280,
87
+ video_height=720,
88
+ use_hwa=True,
89
+ )
90
+ sendonly.connect(fake_video=True)
91
+
92
+ time.sleep(5)
93
+
94
+ sendonly_stats = sendonly.get_stats()
95
+
96
+ sendonly.disconnect()
97
+
98
+ # "type": "answer" の SDP で Simulcast があるかどうか
99
+ assert sendonly.answer_message is not None
100
+ assert "sdp" in sendonly.answer_message
101
+ assert "a=simulcast:send r0;r1;r2" in sendonly.answer_message["sdp"]
102
+
103
+ # codec が無かったら StopIteration 例外が上がる
104
+ sendonly_codec_stats = next(s for s in sendonly_stats if s.get("type") == "codec")
105
+ assert sendonly_codec_stats["mimeType"] == f"video/{video_codec_type}"
106
+
107
+ # 複数のoutbound-rtp統計情報を取得
108
+ outbound_rtp_stats = [
109
+ s for s in sendonly_stats if s.get("type") == "outbound-rtp" and s.get("kind") == "video"
110
+ ]
111
+ assert len(outbound_rtp_stats) == 3
112
+
113
+ # rid でソート
114
+ sorted_stats = sorted(outbound_rtp_stats, key=lambda x: x.get("rid", ""))
115
+
116
+ for i, rtp_stat in enumerate(sorted_stats):
117
+ assert rtp_stat["rid"] == f"r{i}"
118
+ assert rtp_stat["encoderImplementation"] == expected_implementation
119
+ assert rtp_stat["bytesSent"] > 0
120
+ assert rtp_stat["packetsSent"] > 0
121
+
122
+
61
123
  @pytest.mark.skip(reason="ローカルでは成功する")
62
124
  def test_macos_h264_sendonly_recvonly(setup):
63
125
  signaling_urls = setup.get("signaling_urls")
@@ -65,3 +65,4 @@ def test_simulcast(setup, video_codec_type, expected_implementation):
65
65
  assert rtp_stat["encoderImplementation"] == expected_implementation
66
66
  assert rtp_stat["bytesSent"] > 0
67
67
  assert rtp_stat["packetsSent"] > 0
68
+