Skip to content

chore(deps): bump anyio from 4.12.0 to 4.14.2 - #591

Open
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/uv/anyio-4.14.2
Open

dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/uv/anyio-4.14.2

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 19, 2026

Copy link
Copy Markdown
Contributor

Bumps anyio from 4.12.0 to 4.14.2.

Release notes

Sourced from anyio's releases.

4.14.2

  • Changed ByteReceiveStream.receive() implementations to raise a ValueError when max_bytes is not a positive integer (#1191)
  • Fixed CapacityLimiter.total_tokens rejecting float("inf") when the limiter was instantiated outside of an event loop. The adapter setter checked for infinity by identity (value is math.inf), so only the exact math.inf singleton was accepted, while every backend setter (using math.isinf()) accepts any positive infinity (#1189; PR by @​greymoth-jp).
  • Fixed to_process.run_sync() deadlocking when the worker function writes enough data to sys.stderr to fill the (undrained) pipe buffer. The worker process now redirects sys.stderr to os.devnull as well, matching the documented behavior
  • Fixed TLSStream.wrap() matching an internationalized (unicode) host name against the peer certificate using IDNA 2003 (via the standard library) instead of IDNA 2008, which could cause the host name to be matched against the wrong certificate (#1208)
  • Fixed anyio.open_process() (and run_process()) ignoring the extra_groups argument, as it mistakenly passed the value of the group argument instead (#1209)
  • Fixed CapacityLimiter.acquire_nowait() and CapacityLimiter.acquire_nowait_on_behalf_of() raising trio.WouldBlock instead of anyio.WouldBlock on the trio backend when there are no tokens available (#1218)
  • Fixed CapacityLimiter on the asyncio backend over-granting tokens (borrowed_tokens exceeding total_tokens and available_tokens going negative) when a non-blocking acquire was made in the window between a token being released and the notified waiter resuming. The freed token is now reserved for the woken waiter right away, so the non-blocking acquire correctly raises WouldBlock (#1170; PR by @​gaoflow)
  • Fixed unnecessary CPU spin when delivering cancellation from CancelScope on asyncio under certain conditions, including improper cancel scope nesting (#1111)

4.14.1

  • Fixed teardown of higher-scoped async fixtures failing on asyncio with RuntimeError: Attempted to exit cancel scope in a different task than it was entered in when an async test raise an outcome exception (e.g., pytest.skip(), pytest.xfail(), or pytest.fail()) (#1179; PR by @​EmmanuelNiyonshuti)
  • Fixed CapacityLimiter.total_tokens rejecting a value of 0 when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (#1183; PR by @​nyxst4ck)

4.14.0

  • Added support for Python 3.15

  • Added an asynchronous implementation of the itertools module (#998; PR by @​11kkw)

  • Added the local_port parameter to connect_tcp() to allow binding to a specific local port before connecting (#1067; PR by @​nullwiz)

  • Added support for custom capacity limiters in async path and file I/O functions and classes

  • Added the create_task() task group method for easier asyncio migration (returns a TaskHandle) (#1098)

  • Changed TaskGroup.start_soon() to return a TaskHandle

  • Added an option for TaskGroup.start() to return a TaskHandle (which then contains the start value in the start_value property)

  • Added the cancel() convenience method to TaskGroup as a shortcut for cancelling the task group's cancel scope

  • Improved the error message when a known backend is not installed to suggest the install command (#1115; PR by @​EmmanuelNiyonshuti)

  • Improved anyio.Path to preserve subclass types by returning Self in methods that return path objects (#1130; PR by @​EmmanuelNiyonshuti)

  • Changed the parameter type annotation in anyio.Path.write_bytes() to accept any ReadableBuffer, thus allowing it to accept bytearray and memoryview to match pathlib.Path.write_bytes() (#1135; PR by @​SAY-5)

  • Changed several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:

    • TaskGroup.start_soon()
    • TaskGroup.start()
    • anyio.from_thread.run()

    This reverts an earlier change from v3.7.0 which was made in error. (#1153)

  • Changed anyio.run to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (#1171; PR by @​gschaffner)

  • Changed several classes (and their subclasses) to have __slots__ (with __weakref__):

    • anyio.CancelScope

... (truncated)

Commits
  • c384f99 Bumped up the version
  • dbba29d Fixed 100% CPU spin on cancel scope misuse (#1217)
  • 6bbc6c3 Fix CapacityLimiter over-granting tokens on asyncio (#1172)
  • 6f82b25 Refactored TestTLSStream.test_receive_invalid_max_bytes() to be less flaky
  • be24b04 Relaxed timeouts to fix test flakiness
  • 8113506 Fix test flakiness caused by slow callback duration logging
  • 1e988b6 Fixed CapacityLimiter raising trio.WouldBlock instead of anyio.WouldBlock (#1...
  • 44713f3 Pin setup-uv to a commit sha across downstream jobs (#1213)
  • f1b7301 Fixed stderr writes in a worker subprocess causing a deadlock (#1207)
  • 212be93 Fix flaky test_tcp_listener_same_port using a hardcoded port (#1206)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps [anyio](https://github.com/agronholm/anyio) from 4.12.0 to 4.14.2.
- [Release notes](https://github.com/agronholm/anyio/releases)
- [Commits](agronholm/anyio@4.12.0...4.14.2)

---
updated-dependencies:
- dependency-name: anyio
  dependency-version: 4.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file minor python:uv Pull requests that update python:uv code labels Sep 19, 2026
@codecov

codecov Bot commented Sep 19, 2026

Copy link
Copy Markdown

❌ 8 Tests Failed:

Tests completed Failed Passed Skipped
43 8 35 5
View the top 3 failed test(s) by shortest run time
tests.parsers.test_twitter::test_gif
Stack Traces | 0.038s run time
tests/parsers/test_twitter.py:84: in test_gif
    await asyncio.gather(*[parse_gif(url) for url in urls])
tests/parsers/test_twitter.py:75: in parse_gif
    result = await parser.parse(keyword, searched)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/base.py:89: in parse
    return await self._handlers[keyword](self, searched)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/twitter.py:63: in _parse
    return await self.parse_by_vxapi(url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/twitter.py:71: in parse_by_vxapi
    response.raise_for_status()
.venv/lib/python3.14.../site-packages/httpx/_models.py:829: in raise_for_status
    raise HTTPStatusError(message, request=request, response=self)
E   httpx.HTTPStatusError: Client error '403 Forbidden' for url 'https://api.vxtwitter..../Dithmenos9/status/1966798448499286345'
E   For more information check: https://developer.mozilla..../HTTP/Status/403
tests.parsers.test_twitter::test_img
Stack Traces | 0.038s run time
tests/parsers/test_twitter.py:57: in test_img
    await asyncio.gather(*[parse_img(url) for url in urls])
tests/parsers/test_twitter.py:49: in parse_img
    result = await parser.parse(keyword, searched)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/base.py:89: in parse
    return await self._handlers[keyword](self, searched)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/twitter.py:63: in _parse
    return await self.parse_by_vxapi(url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/twitter.py:71: in parse_by_vxapi
    response.raise_for_status()
.venv/lib/python3.14.../site-packages/httpx/_models.py:829: in raise_for_status
    raise HTTPStatusError(message, request=request, response=self)
E   httpx.HTTPStatusError: Client error '403 Forbidden' for url 'https://api.vxtwitter..../Fortnite/status/1870484479980052921'
E   For more information check: https://developer.mozilla..../HTTP/Status/403
tests.parsers.test_twitter::test_repost
Stack Traces | 0.04s run time
tests/parsers/test_twitter.py:99: in test_repost
    result = await parser.parse(keyword, searched)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/base.py:89: in parse
    return await self._handlers[keyword](self, searched)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/twitter.py:63: in _parse
    return await self.parse_by_vxapi(url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/twitter.py:71: in parse_by_vxapi
    response.raise_for_status()
.venv/lib/python3.14.../site-packages/httpx/_models.py:829: in raise_for_status
    raise HTTPStatusError(message, request=request, response=self)
E   httpx.HTTPStatusError: Client error '403 Forbidden' for url 'https://api.vxtwitter..../matcha__ore_p/status/2025067664830497203'
E   For more information check: https://developer.mozilla..../HTTP/Status/403
tests.parsers.test_twitter::test_video
Stack Traces | 0.117s run time
tests/parsers/test_twitter.py:31: in test_video
    await asyncio.gather(*[parse_video(url) for url in urls])
tests/parsers/test_twitter.py:21: in parse_video
    result = await parser.parse(keyword, searched)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/base.py:89: in parse
    return await self._handlers[keyword](self, searched)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/twitter.py:63: in _parse
    return await self.parse_by_vxapi(url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/twitter.py:71: in parse_by_vxapi
    response.raise_for_status()
.venv/lib/python3.14.../site-packages/httpx/_models.py:829: in raise_for_status
    raise HTTPStatusError(message, request=request, response=self)
E   httpx.HTTPStatusError: Client error '403 Forbidden' for url 'https://api.vxtwitter..../Fortnite/status/1904171341735178552'
E   For more information check: https://developer.mozilla..../HTTP/Status/403
tests.parsers.test_bilibili_need_ck::test_no_audio_video
Stack Traces | 0.427s run time
tests/parsers/test_bilibili_need_ck.py:74: in test_no_audio_video
    video_url, audio_url = await parser.extract_download_urls(bvid="BV1gRjMziELt")
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../parsers/bilibili/__init__.py:327: in extract_download_urls
    download_url_data = await video.get_download_url(page_index=page_index)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14............/site-packages/bilibili_api/video.py:492: in get_download_url
    cid = await self.__get_cid_by_index(page_index)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14............/site-packages/bilibili_api/video.py:410: in __get_cid_by_index
    info = await self.__get_info_cached()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14............/site-packages/bilibili_api/video.py:311: in __get_info_cached
    return await self.get_info()
           ^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14............/site-packages/bilibili_api/video.py:247: in get_info
    await Api(**api, credential=self.credential).update_params(**params).result
.venv/lib/python3.14.../bilibili_api/utils/network.py:2393: in result
    return await self.request()
           ^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14.../bilibili_api/utils/network.py:2385: in request
    raise e
.venv/lib/python3.14.../bilibili_api/utils/network.py:2376: in request
    return await self._request(raw=raw, byte=byte)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14.../bilibili_api/utils/network.py:2342: in _request
    ret = self._process_response(resp=resp, raw=raw)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14.../bilibili_api/utils/network.py:2280: in _process_response
    raise NetworkException(resp.code, resp.utf8_text())
E   bilibili_api.exceptions.NetworkException.NetworkException: 网络错误,状态码:412 - <!DOCTYPE html>
E   <html lang="zh-cn">
E   
E   <head>
E       <meta http-equiv="Access-Control-Allow-Origin" content="*" />
E       <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5)">
E       <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5)">
E       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
E       <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
E       <meta name="spm_prefix" content="333.937">
E       <title>出错啦! - bilibili.com</title>
E       <link rel="shortcut icon" href="//static.hdslb.com/images/favicon.ico">
E       <script type="text/javascript" src="//s1.hdslb..../js/jquery/jquery1.7.2.min.js"></script>
E       <style>
E           body {
E             margin: 0;
E             padding: 0;
E             width: 100vw;
E             height: 100vh;
E           }
E          .error-container {
E             height: 100%;
E             width: 100%;
E             display: flex;
E             justify-content: center;
E             align-items: center;
E           }
E           .captcha-content {
E             text-align: center;
E           }
E           .txt-wrap {
E             margin-top: 15px;
E             font-size: 12px;
E             line-height: 22px;
E             color: #999;
E             text-align: left;
E           }
E           .txt-item.err-code {
E             font-size: 28px;
E             font-weight: 700;
E             text-align: center;
E             color: #4c93ff;
E             margin-top: 16px;
E           }
E           
E           .captcha-img {
E             width: 160px;
E             height: 160px;
E             margin: auto;
E             background: url('https://i0.hdslb..../jinkela/long/412/%E9%A1%B5%E9%9D%A2%E7%8A%B6%E6%80%81%E5%9B%BE.png') no-repeat center / cover;
E           }
E           .err-text {
E             color: #03a9f4;
E           }
E           .err-default {
E             font-size: 16px;
E             margin-top: 10px;
E           }
E         </style>
E   </head>
E   
E   <body>
E       <noscript>
E             <strong>抱歉!我们需要允许JavaScript才能够正常运行。请打开后重试~</strong>
E             <strong>错误:412</strong>
E         </noscript>
E         <div class="error-container">
E           <div class="captcha-content">
E             <div class="captcha-img"></div>
E             <div class="txt-item err-code">错误号: 412</div>
E             <div class="txt-item err-text"></div>
E             <div class="txt-item err-default">由于触发哔哩哔哩安全风控策略,该次访问请求被拒绝。 
E               <div class="txt-item">The request was rejected because of the bilibili security control policy.</div>
E             </div>
E             <div class="txt-wrap">
E               <div class="txt-item datetime_now"></div>
E               <div class="txt-item user_url"></div>
E               <div class="txt-item user_ip"></div>
E               <div class="txt-item user_id"></div>
E             </div>
E             <div class="check-input">
E                 <div class="title"></div>
E                 <div class="box-pic"></div>
E                 <div class="box"></div>
E                 <div class="state"></div>
E             </div>
E         </div>
E       </div>
E       <script type="text/javascript" charset="utf-8" src="//security.bilibili..../static/js/sha256.min.js"></script>
E       <script type="text/javascript" charset="utf-8" src="//security.bilibili..../static/js/js.cookie.min.js"></script>
E       <script type="text/javascript" charset="utf-8" src="//security.bilibili..../static/js/412.js"></script>
E   </body>
E   </html>。
tests.parsers.test_bilibili_need_ck::test_max_size_video
Stack Traces | 0.471s run time
tests/parsers/test_bilibili_need_ck.py:58: in test_max_size_video
    _, audio_url = await parser.extract_download_urls(bvid=bvid)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../parsers/bilibili/__init__.py:327: in extract_download_urls
    download_url_data = await video.get_download_url(page_index=page_index)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14............/site-packages/bilibili_api/video.py:492: in get_download_url
    cid = await self.__get_cid_by_index(page_index)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14............/site-packages/bilibili_api/video.py:410: in __get_cid_by_index
    info = await self.__get_info_cached()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14............/site-packages/bilibili_api/video.py:311: in __get_info_cached
    return await self.get_info()
           ^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14............/site-packages/bilibili_api/video.py:247: in get_info
    await Api(**api, credential=self.credential).update_params(**params).result
.venv/lib/python3.14.../bilibili_api/utils/network.py:2393: in result
    return await self.request()
           ^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14.../bilibili_api/utils/network.py:2385: in request
    raise e
.venv/lib/python3.14.../bilibili_api/utils/network.py:2376: in request
    return await self._request(raw=raw, byte=byte)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14.../bilibili_api/utils/network.py:2342: in _request
    ret = self._process_response(resp=resp, raw=raw)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14.../bilibili_api/utils/network.py:2280: in _process_response
    raise NetworkException(resp.code, resp.utf8_text())
E   bilibili_api.exceptions.NetworkException.NetworkException: 网络错误,状态码:412 - <!DOCTYPE html>
E   <html lang="zh-cn">
E   
E   <head>
E       <meta http-equiv="Access-Control-Allow-Origin" content="*" />
E       <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5)">
E       <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5)">
E       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
E       <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
E       <meta name="spm_prefix" content="333.937">
E       <title>出错啦! - bilibili.com</title>
E       <link rel="shortcut icon" href="//static.hdslb.com/images/favicon.ico">
E       <script type="text/javascript" src="//s1.hdslb..../js/jquery/jquery1.7.2.min.js"></script>
E       <style>
E           body {
E             margin: 0;
E             padding: 0;
E             width: 100vw;
E             height: 100vh;
E           }
E          .error-container {
E             height: 100%;
E             width: 100%;
E             display: flex;
E             justify-content: center;
E             align-items: center;
E           }
E           .captcha-content {
E             text-align: center;
E           }
E           .txt-wrap {
E             margin-top: 15px;
E             font-size: 12px;
E             line-height: 22px;
E             color: #999;
E             text-align: left;
E           }
E           .txt-item.err-code {
E             font-size: 28px;
E             font-weight: 700;
E             text-align: center;
E             color: #4c93ff;
E             margin-top: 16px;
E           }
E           
E           .captcha-img {
E             width: 160px;
E             height: 160px;
E             margin: auto;
E             background: url('https://i0.hdslb..../jinkela/long/412/%E9%A1%B5%E9%9D%A2%E7%8A%B6%E6%80%81%E5%9B%BE.png') no-repeat center / cover;
E           }
E           .err-text {
E             color: #03a9f4;
E           }
E           .err-default {
E             font-size: 16px;
E             margin-top: 10px;
E           }
E         </style>
E   </head>
E   
E   <body>
E       <noscript>
E             <strong>抱歉!我们需要允许JavaScript才能够正常运行。请打开后重试~</strong>
E             <strong>错误:412</strong>
E         </noscript>
E         <div class="error-container">
E           <div class="captcha-content">
E             <div class="captcha-img"></div>
E             <div class="txt-item err-code">错误号: 412</div>
E             <div class="txt-item err-text"></div>
E             <div class="txt-item err-default">由于触发哔哩哔哩安全风控策略,该次访问请求被拒绝。 
E               <div class="txt-item">The request was rejected because of the bilibili security control policy.</div>
E             </div>
E             <div class="txt-wrap">
E               <div class="txt-item datetime_now"></div>
E               <div class="txt-item user_url"></div>
E               <div class="txt-item user_ip"></div>
E               <div class="txt-item user_id"></div>
E             </div>
E             <div class="check-input">
E                 <div class="title"></div>
E                 <div class="box-pic"></div>
E                 <div class="box"></div>
E                 <div class="state"></div>
E             </div>
E         </div>
E       </div>
E       <script type="text/javascript" charset="utf-8" src="//security.bilibili..../static/js/sha256.min.js"></script>
E       <script type="text/javascript" charset="utf-8" src="//security.bilibili..../static/js/js.cookie.min.js"></script>
E       <script type="text/javascript" charset="utf-8" src="//security.bilibili..../static/js/412.js"></script>
E   </body>
E   </html>。
tests.parsers.test_bilibili::test_dynamic
Stack Traces | 0.788s run time
tests/parsers/test_bilibili.py:130: in test_dynamic
    await asyncio.gather(*[test_parse_dynamic(dynamic_url) for dynamic_url in dynamic_urls])
tests/parsers/test_bilibili.py:121: in test_parse_dynamic
    result = await parser.parse_dynamic_or_opus(dynamic_id)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../parsers/bilibili/__init__.py:184: in parse_dynamic_or_opus
    return await self._parse_dynamic_info(dynamic_info)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../parsers/bilibili/__init__.py:189: in _parse_dynamic_info
    result = await self.parse_video(bvid=archive.bvid)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../parsers/bilibili/__init__.py:115: in parse_video
    video_info = convert(await video.get_info(), VideoInfo)
                         ^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14.../site-packages/bilibili_api/video.py:247: in get_info
    await Api(**api, credential=self.credential).update_params(**params).result
.venv/lib/python3.14.../bilibili_api/utils/network.py:2393: in result
    return await self.request()
           ^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14.../bilibili_api/utils/network.py:2385: in request
    raise e
.venv/lib/python3.14.../bilibili_api/utils/network.py:2376: in request
    return await self._request(raw=raw, byte=byte)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14.../bilibili_api/utils/network.py:2342: in _request
    ret = self._process_response(resp=resp, raw=raw)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14.../bilibili_api/utils/network.py:2280: in _process_response
    raise NetworkException(resp.code, resp.utf8_text())
E   bilibili_api.exceptions.NetworkException.NetworkException: 网络错误,状态码:412 - <!DOCTYPE html>
E   <html lang="zh-cn">
E   
E   <head>
E       <meta http-equiv="Access-Control-Allow-Origin" content="*" />
E       <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5)">
E       <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5)">
E       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
E       <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
E       <meta name="spm_prefix" content="333.937">
E       <title>出错啦! - bilibili.com</title>
E       <link rel="shortcut icon" href="//static.hdslb.com/images/favicon.ico">
E       <script type="text/javascript" src="//s1.hdslb..../js/jquery/jquery1.7.2.min.js"></script>
E       <style>
E           body {
E             margin: 0;
E             padding: 0;
E             width: 100vw;
E             height: 100vh;
E           }
E          .error-container {
E             height: 100%;
E             width: 100%;
E             display: flex;
E             justify-content: center;
E             align-items: center;
E           }
E           .captcha-content {
E             text-align: center;
E           }
E           .txt-wrap {
E             margin-top: 15px;
E             font-size: 12px;
E             line-height: 22px;
E             color: #999;
E             text-align: left;
E           }
E           .txt-item.err-code {
E             font-size: 28px;
E             font-weight: 700;
E             text-align: center;
E             color: #4c93ff;
E             margin-top: 16px;
E           }
E           
E           .captcha-img {
E             width: 160px;
E             height: 160px;
E             margin: auto;
E             background: url('https://i0.hdslb..../jinkela/long/412/%E9%A1%B5%E9%9D%A2%E7%8A%B6%E6%80%81%E5%9B%BE.png') no-repeat center / cover;
E           }
E           .err-text {
E             color: #03a9f4;
E           }
E           .err-default {
E             font-size: 16px;
E             margin-top: 10px;
E           }
E         </style>
E   </head>
E   
E   <body>
E       <noscript>
E             <strong>抱歉!我们需要允许JavaScript才能够正常运行。请打开后重试~</strong>
E             <strong>错误:412</strong>
E         </noscript>
E         <div class="error-container">
E           <div class="captcha-content">
E             <div class="captcha-img"></div>
E             <div class="txt-item err-code">错误号: 412</div>
E             <div class="txt-item err-text"></div>
E             <div class="txt-item err-default">由于触发哔哩哔哩安全风控策略,该次访问请求被拒绝。 
E               <div class="txt-item">The request was rejected because of the bilibili security control policy.</div>
E             </div>
E             <div class="txt-wrap">
E               <div class="txt-item datetime_now"></div>
E               <div class="txt-item user_url"></div>
E               <div class="txt-item user_ip"></div>
E               <div class="txt-item user_id"></div>
E             </div>
E             <div class="check-input">
E                 <div class="title"></div>
E                 <div class="box-pic"></div>
E                 <div class="box"></div>
E                 <div class="state"></div>
E             </div>
E         </div>
E       </div>
E       <script type="text/javascript" charset="utf-8" src="//security.bilibili..../static/js/sha256.min.js"></script>
E       <script type="text/javascript" charset="utf-8" src="//security.bilibili..../static/js/js.cookie.min.js"></script>
E       <script type="text/javascript" charset="utf-8" src="//security.bilibili..../static/js/412.js"></script>
E   </body>
E   </html>。
tests.parsers.test_weibo::test_repost
Stack Traces | 0.941s run time
tests/parsers/test_weibo.py:60: in test_repost
    await asyncio.gather(*[parse_repost(url) for url in urls])
tests/parsers/test_weibo.py:46: in parse_repost
    parse_result = await parser.parse(keyword, searched)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../nonebot_plugin_parser/parsers/base.py:89: in parse
    return await self._handlers[keyword](self, searched)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../parsers/weibo/__init__.py:50: in _parse_m_weibo_cn
    return await self.parse_weibo_id(wid)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../parsers/weibo/__init__.py:193: in parse_weibo_id
    weibo_data = common.decoder.decode(response.content).data
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   msgspec.ValidationError: Object missing required field `data`

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file minor python:uv Pull requests that update python:uv code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants